特定のコマンドやファイルがどのパッケージに含まれているかを検索できる"apt-file"

by Éole


DebianやUbuntuで、パッケージ管理システム"apt"を使っている場合、ある特定のコマンドファイルを"apt"を使ってインストールしたくなる場合があります。

そんな時、"apt-file"を使うと、特定のファイルが含まれているaptパッケージを探し出すことが出来ます。


例えば、UbuntuにLinux用のベンチマークツールの"HDBENCH Clone"をインストールしようと"configure"を実行したところ、以下のエラーが出た。

checking for X... no
configure: error:
*** X libraries or include files not found. Check 'config.log' for
*** more details.

config.logを確認したところ、、、

configure:3739:27: error: X11/Intrinsic.h: No such file or directory

と記録されていた。ライブラリやヘッダファイルが無いときによく見る"No such file or directory"。
どうやら、"Intrinsic.h"が無いらしい。findやlocateコマンドでも探してみたが、本当に無いようだ。


というわけで、ここで"apt-file"を使って、"Intrinsic.h"のファイルが含まれているパッケージを探すことが出来ます。
インストールは以下の手順で実施します。

$ sudo apt-get update
$ sudo apt-get install apt-file

↑はUbuntuを使っている場合。Debianでも、おそらく同様です。

$ sudo apt-file update

インストール後、上記のコマンドで内部のデータベースを更新します。

$ apt-file search Intrinsic.h
libxt-dev: /usr/include/X11/Intrinsic.h
llvm-doc: /usr/share/doc/llvm-doc/html/doxygen/namespacellvm_1_1Intrinsic.html
llvm-doc: /usr/share/doc/llvm-doc/html/doxygen/structllvm_1_1DbgInfoIntrinsic.html
llvm-doc: /usr/share/doc/llvm-doc/html/doxygen/structllvm_1_1MemIntrinsic.html
tendra: /usr/lib/TenDRA/lib/include/x5/t.api/X11/Intrinsic.h

準備が出来たら、上記のように"apt-file search"コマンドの後に、探しているファイル名やコマンド名を入力して実行すると、そのファイルやコマンドが含まれているパッケージの一覧が表示されます。
上記の結果ですと、"libxt-dev"パッケージをインストールすればよいことが分かります。

$ apt-file search apt-file
apt-file: /etc/apt/apt-file.conf
apt-file: /etc/bash_completion.d/apt-file
apt-file: /usr/bin/apt-file
apt-file: /usr/share/apt-file/apt-file-update.update-notifier
apt-file: /usr/share/apt-file/do-apt-file-update
apt-file: /usr/share/apt-file/is-cache-empty
apt-file: /usr/share/doc/apt-file/README
apt-file: /usr/share/doc/apt-file/changelog.gz
apt-file: /usr/share/doc/apt-file/copyright
apt-file: /usr/share/man/man1/apt-file.1.gz
dahb-html: /usr/share/doc/dahb-html/html/apt-file.html
fish: /usr/share/fish/completions/apt-file.fish
kio-apt: /usr/share/services/searchproviders/apt-file.desktop
kio-apt: /usr/share/services/searchproviders/apt-files.desktop
zsh: /usr/share/zsh/4.3.4/functions/Completion/Debian/_apt-file
zsh-beta: /usr/share/zsh-beta/functions/Completion/Debian/_apt-file

コマンドを探す場合も同様で、上記例は"apt-file"の文字列を含むファイルを検索した例です。