足りないファイルがどのパッケージに含まれているか調べるには

導入したいライブラリがあるのに、どのパッケージに含まれているのか分からずにモヤモヤすることがあります。
Debian 系は apt-file コマンドを使うのですが、よく忘れるので備忘録として記載します。

なお、CentOS(RHEL系)は以下をご参照ください。

apt-file 導入

$ apt-file

Command 'apt-file' not found, but can be installed with:

sudo apt install apt-file

$ sudo apt install apt-file

以下のパッケージが新たにインストールされます:
apt-file libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl
libregexp-assemble-perl
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。

apt-file 使用準備

初回利用時は、update します。 ※理由は後述。

$ sudo apt-file update

apt-file 注意点
apt-file は "/etc/apt/sources.list" を基に作成するデータベースを利用するため、以下のタイミングで更新をかける必要があります。

  • 初めて apt-file を使用する
  • "/etc/apt/sources.list" を変更した

apt-file 使い方

基本は、update と search で足りるかと思います。

アクション名 動作
search パターンで指定した名前のファイルが含まれているパッケージを一覧表示する
find 同上
list パターンで指定したパッケージに収録されているファイルを一覧表示する
show 同上
purge キャッシュを削除する
update パッケージリストを/etc/apt/sources.listに従い再取得する

apt-file 仕様例

前回同様、足りない「libXm.so.3」がどのパッケージに含まれているか探してみたいと思います。
libxm4 に含まれていることがわかります。

$ apt-file search libXm.so.3
libxm4: /usr/lib/x86_64-linux-gnu/libXm.so.3
$ apt-cache search libxm4
libxm4 - Motif - X/Motif shared library