Sebastian Günther schrieb am 26.04.2009 19:55: > * Alan McKinnon ([email protected]) [26.04.09 18:49]: >> It should be easy enough to write a program that examines world and displays >> all packages it finds that are dependencies of something else in world, but >> I >> haven't found one, and prefer the manual approach above. >> > > > #!/bin/bash > for i in $( cat /var/lib/portage/world ); do > equery d $i; > done > > Slow, ugly, but does the job > > Sebastian >
Afaik equery does not give the correct output. Use emerge -pv --depclean on every entry in the world file. This may however report false positives when packages are involved that have post dependencies. Happens here with slim,mozilla-thunderbird and audacious-plugins for instance. I have attached a small perl script that examines all world entries. It will take some time for your large world file but give some hints on unneeded packages. -- Daniel Pielmeier
#!/usr/bin/perl
#
#
#
use strict;
use diagnostics;
use warnings;
my ($package,$status,$line) = ();
my @depclean = ();
my $world = "/var/lib/portage/world";
print "Examining: $world\n\n";
open(WORLD,"<$world") || die("world: $!");
foreach $package (<WORLD>) {
chomp $package;
@depclean = qx(emerge -pv --depclean "$package");
foreach $line ( @depclean ) {
if ( $line =~ ">>> These are the packages that would be
unmerged:" ) {
$status = "needed";
write;
} elsif ( $line =~ ">>> No packages selected for removal by
depclean" ) {
$status = "unneeded";
write;
}
}
}
format STDOUT_TOP =
Atom: Status: (required in world)
.
format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$package, $status
.
signature.asc
Description: OpenPGP digital signature

