I'm writing a Perl program to uninstall a whole package tree, such as KDE or Gnome. Here's my code so far:
#! /usr/bin/perl
my @pkgs1, @pkgs2, $line, $line2, $pkg;
open QUERY, "emerge --nospinner -ep gnome |"; foreach $line (<QUERY>) { if($line !~ /^\[.+\]/) { next; } $line =~ s/^\[.+\] (.+) /$1/; chomp $line; push (@pkgs1, $line); } close QUERY;
PKG: foreach $pkg (@pkgs1) { open QUERY, "qpkg -q -nc $pkg |"; DEP: foreach $line (<QUERY>) { $line =~ s/\s+//; if(($line =~ /\*$/) || ($line =~ /DEPENDED/)) { next DEP; } chomp $line; foreach $line2 (reverse @pkgs1) { if($line eq $line2) { next DEP; } if($line2 eq $pkg) { last; } } foreach my $tmp (@pkgs2) { if($tmp eq $line) { next PKG; } } push @pkgs2, $line; print "$line is safe to unmerge\n"; } }
It doesn't yet consult the system or world files, and it seems to still throw in a few things that should stay. Anyone have any ideas?
-- Andrew Gaffney
-- [EMAIL PROTECTED] mailing list