[[diary/Kojima]]

・パッケージに含まれるファイルの検索ツール

昨日のライブラリ検索で出て来たファイルが、どのパッケージに含まれているのかを調べるためのツールもついでに書いてみた。

こっちも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 のオプションでパッケージ名まで引けるようにしてみようかと思っているので、
そのための部品。

前と同様、このページに添付(「コメントの挿入」の下くらいに「添付ファイル」の欄がある)しておくので、
興味ある人はどうぞ。
- 現状だと、シンボリックリンクは調べないので、スクリプトファイルのログを見るようにしてもいいかも。 -- [[kojima]] &new{2012-02-08 (水) 09:27:58};
- 先のget_depends.pyは /usr や /usr/lib64 等のディレクトリにあるファイルを調べるのに対して、get_pkglist.py は/var/log/packages/ 以下を見ているので、installpkg/updatepkg でインストールしたファイルしか検索対象にしないから、VirtualBoxみたいに自前のインストーラでインストールしたファイルは出てこない。為念。-- [[kojima]] &new{2012-02-08 (水) 09:30:19};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS