Tak som vyhrabal nejaku starsiu verziu toho skriptu. Treba mat nainstalovany gentoolkit. Vola to 'equery depends' a vyrobi graf reverznych zavislosti v style
balik: zavislost1, zavislost2, zavislost3
Potom staci vygrepovat baliky, na ktorych nie su ziadne zavislosti, pozret ze co vlastne z toho chceme mat nainstalovane a povyhadzovat kniznice, ktore zostali. Inak ten skript je sialene pomaly (pretoze vola equery tolkokrat kolko je balikov, lepsie by to bolo cez portage api hladat dopredne zavislosti a urobit graf z nich, ale ked api je len v pythone a swig tiez moc nemusim...)
#!/usr/bin/perl -w
#For each installed package, lists packages directly depending on the package
#Basically writes out reverse dependency graph in the form
#package: dependency1, dependency2, ... dependencyN
#e.g.:
#app-cdr/cdrkit: app-cdr/cdrdao, app-cdr/dvd+rw-tools, app-cdr/k3b
#
#This script is horribly slow, because it calls equery depends for each package.
#Also it'd break if equery output/options changed.
use strict;
my (%pkgs, $verbose);
$verbose = 1;
#read and parse all installed packages
open(EQUERY, "equery -d -C list -i |");
while (<EQUERY>)
{
chomp;
#strip brackets
#s/^\[.*?\]\s+\[.*?\]\s+(.*)\s+\(.*\)$/$1/;
if (/^\s+/) {next;} #skip " * installed packages" note
#leave only package name without version
my $pkgname = stripversion($_);
#create ref to array
$pkgs{$pkgname} = [];
}
close(EQUERY);
$, = ", ";
$" = ", ";
foreach my $pkgname (sort keys %pkgs)
{
local(*EQUERY);
my ($dep);
open(EQUERY, "equery -q d $pkgname|");
#read each dependency
while ($dep = <EQUERY>)
{
chomp($dep);
my $dep = stripversion($dep);
push (@{$pkgs{$pkgname}}, $dep);
}
close(EQUERY);
print "$pkgname: ";
print @{$pkgs{$pkgname}};
print "\n";
}
sub stripversion
{
my $pkgname = shift;
$pkgname =~ s/-\d.*$//;
return $pkgname;
}