#08-04 [hack]Dependency tree of debian package
自分の作ったパッケージの依存関係を確認したかったので、探してみたけど発見できなかった…。
しょうがないのででっち上げ。apt-cacheを再起的に実行しているだけ。
#!/usr/bin/perl
my $APTCACHE = 'apt-cache depends';
my $level = 0;
my %count;
my $cmd = $0;
$cmd = shift if ($ARGV[0] =~ /^-/);
foreach (@ARGV) {
%count = ();
print "$_:";
doDepends($_);
print "\n";
}
sub doDepends {
my @ar = ();
open(FD, "$APTCACHE $_[0] |");
while (<FD>) {
push @ar, $1 if (/Depends: (.*)/);
}
close(FD);
return if ($#ar < 0);
@ar = grep !$count{$_}++, @ar if ($cmd ne "-r" && $cmd ne "--redundant");
$level++;
foreach (@ar) {
print "\n" . " " x $level . $_;
doDepends($_);
}
$level--;
}
こんな感じになる。
% deptree lynx
lynx:
libc6
libncurses
libopenssl
% deptree -r lynx
lynx:
libc6
libncurses
libc6
libopenssl
libc6
絶対きっとどこかにあるよなこんなの。