・パッケージに含まれるファイルの検索ツール
昨日のライブラリ検索で出て来たファイルが、どのパッケージに含まれているのかを調べるためのツールもついでに書いてみた。
こっちも2つ組になっていて、get_pkglist.py を実行すれば /var/log/packages/ 以下を調べて、 どのパッケージにどういうファイルが入っているかを ./filelist.sql3 に記録する。 このデータベースファイルから query_pkglist.py でパッケージからファイル、ファイルからパッケージを引く。
使えるオプションは -g、-f、-p の3種で、-g がパッケージ名の一部からそのパッケージに含まれているファイルを表示する。
$ ./query_pkglist.py -g bash package bash-4.1-x86_64-P3.txz has: ABOUT-NLS.gz(/usr/share/doc/bash-4.1/ABOUT-NLS.gz) AUTHORS.gz(/usr/share/doc/bash-4.1/AUTHORS.gz) COPYING.gz(/usr/share/doc/bash-4.1/COPYING.gz) ChangeLog.gz(/usr/share/doc/bash-4.1/ChangeLog.gz) INSTALL.gz(/usr/share/doc/bash-4.1/INSTALL.gz) NEWS.gz(/usr/share/doc/bash-4.1/NEWS.gz) PlamoBuild.bash-4.1.gz(/usr/share/doc/bash-4.1/PlamoBuild.bash-4.1.gz) README.gz(/usr/share/doc/bash-4.1/README.gz) bash(/bin/bash) ...
ファイル名の一部からパッケージ名を引く時は -f。
$ ./query_pkglist.py -f libomapi.a file libomapi.a included in: dhcp-4.2.3_P1-x86_64-P2.txz
上のオプションはファイル名のみを検索対象にするけど、-p を指定するとパス名も含めて検索するので、 ディレクトリを指定すれば、そのディレクトリを作ったパッケージが分かる。
$ ./query_pkglist.py -p /usr/lib/sa/ file /usr/lib/sa/sa1 included in: sysstat-10.0.1-x86_64-P1.txz file /usr/lib/sa/sa2 included in: sysstat-10.0.1-x86_64-P1.txz file /usr/lib/sa/sadc included in: sysstat-10.0.1-x86_64-P1.txz
まぁ、これは /var/log/packages/ 以下をgrepするだけで分かるのでそれほど必要性は無いのだけど、 将来的には query_depends.py のオプションでパッケージ名まで引けるようにしてみようかと思っているので、 そのための部品。
前と同様、このページに添付(「コメントの挿入」の下くらいに「添付ファイル」の欄がある)しておくので、 興味ある人はどうぞ。