Debian 依存図 (続き)

http://gauc.no-ip.org/hatena/awk_dot.png

以下からの続きです。

dpkg-awk というものがあるのを知り、awkawkawk らしくってことで作ってみました。ただし、Pre-Depend は省略しています。しかも PNG というところは Zaurus でまだ SVG が見られる環境を構築していないだけです。しかも dot がメモリ不足で全部を処理できないので、awk に関するところだけ抜き出してみましょう。

  • dpkg-awk からデータを抽出して
  • awk で dot ファイルを作って
  • dot で PNG を作る
$ dpkg-awk -f=/var/lib/dpkg/available "Package:.*" -- Package Depends > tmp_awk.txt
$ gawk -f make_dot.awk tmp_awk.txt > tmp_dot.dot
$ gawk 'BEGIN{print "digraph awk {"} /awk/{print} END{print "}"}' tmp_dot.dot > awk.dot
$ dot -Tpng awk.dot -o awk.png

ここで使った make_dot.awk は以下のようなものです。

#! /usr/bin/gawk -f
# make_dot.awk - create dot file from dpkg-awk results
#   input:  dpkg-awk results
#   output: dot file

BEGIN {
    RS = "";
    print "digraph G {";
}
{
    for (i = 4; i <= NF; i++) {
        if ($i !~ /[()|]/) {
            sub(/,/, "", $i);
            printf("\t\"%s\" -> \"%s\";\n", $2, $i);
        }
    }
}
END {
    print "}";
}

図が小さくて申し訳ありません。クリックすれば拡大されます。