あるファイルがどのパッケージに含まれているかを知りたくなる場面は意外と多い。 例えば何かをビルドするときにヘッダファイルがないといわれて、それがどのパッケージに含まれているか調べたいとか。 あるいは何かをパッケージングするときに、それが依存しているパッケージを調べたいとか。 そういったときは Linux ディストリビューションのパッケージシステムが APT なら apt-file を使うと楽ができる。
使った環境は次の通り。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS" $ uname -r 3.19.0-25-generic
下準備
まずは apt-file をインストールする。
$ sudo apt-get -y install apt-file
次にファイルのインデックスを更新する。 要するに、何が何処にあるかという情報を取得してくる作業だ。
$ sudo apt-file update
ファイルが含まれるパッケージを調べる
例えば stdio.h って何処に含まれていたっけなーと調べるときは apt-file の search サブコマンドを実行する。
$ apt-file search /usr/include/stdio.h libc6-dev: /usr/include/stdio.h
これで libc6-dev に含まれていることが分かった。
apt-file の便利なところはファイルがインストールされていなくても調べられるところ。 例えば先ほどの libc6-dev をアンインストールする。
$ sudo apt-get -y remove libc6-dev
もちろん、これで調べたいファイルは存在していない。
$ ls /usr/include/stdio.h ls: cannot access /usr/include/stdio.h: No such file or directory
それでも apt-file はパスを指定すれば、それがどこに含まれるか教えてくれる。
$ apt-file search /usr/include/stdio.h libc6-dev: /usr/include/stdio.h
べんり。
パッケージシステムが、どのファイルが何処にあるかをちゃんとインデックスしているおかげだね。 めでたしめでたし。
- 作者:もみじあめ
- 発売日: 2020/02/29
- メディア: Kindle版