しゃある通信

#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
絶対きっとどこかにあるよなこんなの。



マクロミルへ登録

© 2005 Kazuya 'Sharl' Masuda
(C)Willoo Entertainment Inc. (C)Konami Digital Entertainment 株式会社ウィローエンターテイメント及び株式会社コナミデジタルエンタテインメントの著作権を侵害する行為は禁止されています。 0.003941 cached