#!/usr/bin/perl my $dir = `pwd`; chomp $dir; $dir .= "/../../.."; #- allow devfsd to enable a faster upgrade. system "modprobe loop"; my $devfsd_pid = `/sbin/pidof devfsd`; $devfsd_pid > 0 and kill 15, $devfsd_pid; #- perl version of the install, we use directly the version we found, #- this means there SHOULD BE no module compiled for an older version of perl #- which will be used by DrakX. my ($version, $arch) = (glob "$dir/usr/lib/perl5/*/*/CORE/libperl.so")[0] =~ m|$dir/usr/lib/perl5/([^/]*)/([^/]*)/CORE/libperl.so|; #- keep it mind the ELF loader to use. $ENV{LD_LOADER} = "$dir/lib/ld-linux.so.2"; $ENV{LOCPATH}="$dir/usr/share/locale"; $ENV{GCONV_PATH}="$dir/usr/lib/gconv"; $ENV{PERL5LIB} = join ":", map { "$dir/usr/lib/perl5/$_" } ("$version/$arch", "$version", "site_perl/$version/$arch", "site_perl/$version", "site_perl", "vendor_perl/$version/$arch", "vendor_perl/$version", "vendor_perl", ); $ENV{LD_LIBRARY_PATH} = "$dir/usr/bin:$dir/bin:$dir/sbin:$dir/usr/sbin:$dir/usr/X11R6/bin:$dir/lib:$dir/usr/lib:$dir/usr/lib/perl5/$version/$arch/CORE"; $ENV{PATH} = join(":", map { "$dir/$_" } split ":", "/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin") . ":$ENV{PATH}"; $ENV{SHARE_PATH} = "$dir/usr/share"; $ENV{RPMRC_FILE} = "$dir/usr/lib/rpm/rpmrc"; $ENV{GTK_DATA_PREFIX} = "$dir/usr"; $ENV{GTK_EXE_PREFIX} = "$dir/usr"; $ENV{GDK_IMLIB_PATH} = "$dir/usr/lib"; system $ENV{LD_LOADER}, "../perl", "-i", "-pe", "s,^(.*macrofiles[^/]*)(.*),\$1$dir/usr/lib/rpm/macros:\$2,", $ENV{RPMRC_FILE}; system $ENV{LD_LOADER}, "../perl", "./install2", "--live", @ARGV; #- at this point, unwind above else they will not run correctly (wrong ld-linux.so.2) delete $ENV{GTK_EXE_PREFIX}; delete $ENV{RPMRC_FILE}; delete $ENV{LOCPATH}; delete $ENV{SHARE_PATH}; delete $ENV{PATH}; delete $ENV{LD_LIBRARY_PATH}; delete $ENV{PERL5LIB}; delete $ENV{LD_LOADER}; $ENV{DISPLAY} and system "xset", "-fp", "/tmp/drakx/mdkinst/usr/X11R6/lib/X11/fonts/"; foreach (qw(misc PEX Speedo Type1 mdk 75dpi 100dpi cyrillic)) { -d "/usr/X11R6/lib/X11/fonts/$_" or next; -e "/usr/X11R6/lib/X11/fonts/$_/fonts.dir" and next; chdir "/usr/X11R6/lib/X11/fonts/$_"; system "mkfontdir"; } $ENV{DISPLAY} and system "xset", "fp", "rehash"; system "/bin/rm", "-rf", "/tmp/drakx"; system "/bin/rm", "-rf", "/tmp/rhimage"; #- restore devfsd if it was running. $devfsd_pid > 0 and system "/sbin/devfsd /dev"; exec "/bin/sync";