#!/usr/bin/perl $DIR = "/var/lib/urpmi"; $DIR2 = "/etc/urpmi"; $BASE = "$DIR/autoirpm"; $BASE2 = "$DIR2/autoirpm"; $AUTO_INSTALL_BIN_LIST = "$BASE.binaries"; $INSTALL_SCRIPT_REP = "$BASE.scripts"; system("packdrake --cat $DIR/hdlist*.cz | autoirpm.update-all $BASE2.allow $BASE2.deny - > $AUTO_INSTALL_BIN_LIST"); $? == 0 or die "autoirpm.upgrade-all failed\n"; open F, $AUTO_INSTALL_BIN_LIST or die; map { chop; create_links_and_install_scripts($_) } <F>; close F; sub create_links_and_install_scripts($) { my ($rpm, @progs) = split ' ', $_[0]; my $script = "$INSTALL_SCRIPT_REP/$rpm"; foreach (@progs) { lstat "/$_" and return } # verify that it's not installed foreach (@progs) { mkdir_(dirname("/$_")); symlink $script, "/$_"; # or die "$rpm: /$_"; } open G, ">$script" or die; print G "_irpm $rpm \$0 \$*\n"; close G; chmod 0755, "$script"; } sub dirname { local $_ = shift; s|[^/]*/*\s*$||; s|(.)/*$|$1|; $_ || '.' } sub mkdir_ { -d $_[0] and return; my $root = dirname $_[0]; if (-e $root) { -d $root or die "mkdir: error creating directory $_[0]: $root is a file and i won't delete it\n"; } else { mkdir_($root); } mkdir $_[0], 0755 or die "mkdir: error creating directory $_: $!\n"; }