ブログ

指定のファイルがどのDebianパッケージに含まれているかを調べる

at_ito
2014年11月8日 12時37分

ソースコードをビルドする際に、特定のファイルが必要で、それをDebianパッケージからインストールしたい場合があると思います。そういった際に便利な方法です。

以下の方法のいずれかで調べることができます。

  • Debian Packagesで調べる
  • ATDEにインストールされているパッケージから調べる
  • apt-fileコマンドで調べる

以下、それぞれの方法について説明します。

Debian Packagesで調べる

Debian Packagesのサイト(https://www.debian.org/distrib/packages)にある、 「パッケージの内容を検索」にファイル名を入れることで指定のファイルが 含まれるDebianパッケージを調べることができます。

ATDEにインストールされているパッケージから調べる

ATDEで以下のように「dpkg -S」コマンドを実行することで、すでにATDEにインストールされているDebianパッケージであれば、検索することができます。

[atde ~]$ dpkg -S パス名(ファイル名も可)

例として、「/bin/ls」コマンドが含まれるパッケージを調べる場合は、以下のようになります。

[atde ~]$ dpkg -S /bin/ls
coreutils: /bin/ls

上記内容から、「/bin/ls」コマンドはcoreutilsパッケージに含まれていることがわかります。

apt-file searchコマンドで調べる

ATDEで以下のように「apt-file search」コマンドを実行することで検索できます。

[atde ~]$ apt-file search パス名(ファイル名も可)

例として、「/bin/ls」というパスが含まれるパッケージを調べる場合は、以下のようになります。

[atde ~]$ apt-file search "/bin/ls"
9base: /usr/lib/plan9/bin/ls
canna-utils: /usr/bin/lsdic
cgroup-bin: /usr/bin/lscgroup
(省略)
util-linux: /bin/lsblk
util-linux: /usr/bin/lscpu
xen-utils-4.1: /usr/lib/xen-4.1/bin/lsevtchn

上記のように/bin/lsというパス名が含まれるファイルが入っているDebianパッケージが表示されます。「dpkg -S」コマンドに比べて、インストールされていないパッケージも検索してくれるので便利です。

もし、「E: The cache is empty. You need to run 'apt-file update' first.」というエラーが発生した場合は、以下のコマンドを実行してください。

[atde ~]$ apt-file update

もし、apt-fileコマンドがない場合は、以下のコマンドを実行してインストールしてください。

[atde ~]$ sudo apt-get install apt-file