summaryrefslogtreecommitdiffstats
path: root/rpme
diff options
context:
space:
mode:
Diffstat (limited to 'rpme')
-rw-r--r--rpme68
1 files changed, 0 insertions, 68 deletions
diff --git a/rpme b/rpme
deleted file mode 100644
index a4a8cb99..00000000
--- a/rpme
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/perl
-
-local $_ = join '', @ARGV;
-
-/-h/ || @ARGV == 0 and die "usage: rpme [-a] [--auto] <packages...>\n";
-
-$matches = /-a/;
-$auto = /-auto/;
-
-my $DIR = "/var/lib/urpmi";
-
-@l = grep { !/^-/ } @ARGV;
-if (!$matches) {
- @m = map { chop; $_ } `rpm -q @l 2>&1`;
- if ($?) {
- $maymatch = "unknown package(s) " . join(", ", map { /package (\S+) is not installed/ ? $1 : () } @m) . "\n";
- $auto || @l > 1 and die $maymatch;
- }
-}
-if ($matches || $maymatch) {
- my $match = join "|", @l;
- @m = grep { /$match/ } map { chop; $_ } `rpm -qa`;
-
- if ($maymatch) {
- @m or die $maymatch;
- print "Using $match as a substring, I found:\n@m\nRemove them all? (y/N) ";
- <STDIN> =~ /y/i or exit 1;
- }
-}
-
-load_provides();
-my %toremove; @toremove{$_, @{$provides{$_} || []}} = () foreach @m;
-my $changed = 1; while ($changed) { $changed = 0;
- local *F;
- open F, "rpm -e --test " . join(" ", keys %toremove) . " 2>&1 |";
- foreach (<F>) {
- if (/package (\S+) is not installed/) {
- delete $toremove{$1};
- } elsif (/is needed by (\S+)/ && ! exists $toremove{$1}) {
- $toremove{$1} = 1;
- $changed = 1;
- }
- }
-}
-my @toremove = keys %toremove or die "nothing to remove\n";
-if (@toremove > @l && !$auto) {
- my $sum = 0; map { $sum += $_ } `rpm -q --queryformat "%{SIZE}\n" @toremove`;
- print "To satisfy dependencies, the following packages are going to be removed";
- printf " (%d MB)", toMb($sum);
- print ":\n@toremove\nIs it ok? (Y/n) ";
- <STDIN> =~ /n/i and exit 0;
-}
-system("rpm", "-e", @toremove);
-
-
-sub load_provides {
- local *F;
- open F, "$DIR/depslist" or return;
- foreach (<F>) {
- my ($p, $size, @l) = split;
- $size{$p} = $size;
- push @{$provides{$_}}, $p foreach @l;
- }
-}
-sub toMb {
- my $nb = $_[0] / 1024 / 1024;
- int $nb + 0.5;
-}