「Ubuntuでインストールすべきパッケージがわからない・・・」
「ディストリビューション毎にライブラリのパッケージ名称が違って、わかりにくい・・・」
このような場合には、apt-fileがオススメです。
この記事では、apt-fileについて解説しています。
本記事の内容
- apt-fileとは?
- apt-fileのインストール
- apt-fileの使い方
それでは、上記に沿って解説していきます。
apt-fileとは?
apt-fileは、特定のファイルが含まれているパッケージの検索コマンドラインツールです。
公式の説明は、パッケージ自体の説明をご覧ください。
$ apt info apt-file Package: apt-file Version: 3.2.2 Priority: optional Section: universe/admin Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: APT Development Team <deity@lists.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 92.2 kB Depends: perl:any, apt (>= 1.3~exp1~), libapt-pkg-perl, liblist-moreutils-perl, libregexp-assemble-perl Breaks: apt-venv (<< 1.0.0-1~), command-not-found (<< 0.2.38-2~), devscripts (<< 2.15.10~) Download-Size: 27.6 kB APT-Sources: http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages Description: Debian パッケージに含まれるファイルを検索 (コマンドラインインターフェイス) apt-file は、APT パッケージングシステム用のコマンドラインツールで、パッケー ジに含まれるファイルを検索できます。あるファイルが含まれているパッケージを 探したり、インストールや取得をせずにパッケージの中身を一覧表示したりできます。
apt-fileを使いこなせば、必要なパッケージにすぐにたどり着けます。
Googleで検索した場合、ディストリビューション違いで無関係のパッケージにヒットしたりします。
apt-fileを使うことにより、そのような無駄を省くことが可能になります。
使い方も簡単であるため、apt-fileの利用をオススメします。
以上、apt-fileについて説明しました。
次は、apt-fileのインストールを説明します。
apt-fileのインストール
apt-fileのインストールは、簡単です。
Ubuntuであれば、OS標準のapt-fileが用意されています。
次のコマンドで一撃です。
$ sudo apt install -y apt-file
apt-fileのインストールは、すぐに完了します。
インストールが完了したら、まずはヘルプの確認です。
$ apt-file -h apt-file [options] action [pattern] apt-file [options] -f action <file> apt-file [options] -D action <debfile> Pattern options: ================ --fixed-string -F Do not expand pattern --from-deb -D Use file list of .deb package(s) as patterns; implies -F --from-file -f Read patterns from file(s), one per line (use '-' for stdin) --ignore-case -i Ignore case distinctions --regexp -x pattern is a regular expression --substring-match pattern is a substring (no glob/regex) Search filter options: ====================== --architecture -a <arch> Use specific architecture [L] --index-names -I <names> Only search indices listed in <names> [L] --filter-suites <suites> Only search indices for the listed <suites> [L] (E.g. "unstable") --filter-origins <origins> Only search indices from <origins> [L] (E.g. "Debian") Other options: ============== --config -c <file> Parse the given APT config file [R] --option -o <A::B>=<V> Set the APT config option A::B to "V" [R] --package-only -l Only display packages name --verbose -v run in verbose mode [R] --help -h Show this help. -- End of options (necessary if pattern starts with a '-') [L]: Takes a comma-separated list of values. [R]: The option can be used repeatedly Action: list|show <pattern> List files in packages list-indices List indices configured in APT. search|find <pattern> Search files in packages update Fetch Contents files from apt-sources.
基本的には、「apt-file search キーワード」をよく利用することになります。
あとは、次のコマンドです。
apt-file update
ヘルプにも記述されています。
「apt-sourcesからContentsファイルを取得します」という内容です。
簡単に言うと、「apt update」と同じことです。
これのapt-file版だと考えれば、理解しやすいでしょう。
同様に、「sudo」で実行しないとエラーになってしまいます。
$ apt-file update パッケージリストを読み込んでいます... 完了 E: ロックファイル /var/lib/apt/lists/lock をオープンできません - open (13: 許可がありません) E: ディレクトリ /var/lib/apt/lists/ をロックできません W: ファイル /var/cache/apt/pkgcache.bin の削除中に問題が発生しました - RemoveCaches (13: 許可がありません) W: ファイル /var/cache/apt/srcpkgcache.bin の削除中に問題が発生しました - RemoveCaches (13: 許可がありません)
そのため、以下のコマンドを実行するようにします。
$ sudo apt-file update
以上、apt-fileのインストールを説明しました。
次は、apt-fileの使い方を説明します。
apt-fileの使い方
apt-fileを利用するのは、基本的にはパッケージを見つけたい場合です。
具体例を用いて、apt-fileの使い方を説明します。
例えば、zlibライブラリのパッケージを探すような場合があります。
zlibとは、データの圧縮および伸張を行うライブラリです。
そのため、zlibは多くのプログラムにおいて利用・依存されています。
そんなzlibに依存するプログラムをインストール・ビルドする際に、以下のようなエラーが出ることがあります。
Missing (or bad) header file: zlib.h
zlib.hが存在していないという内容のエラーメッセージです。
このエラーを解消するために、zlibライブラリをインストールする必要があります。
こんなときにapt-fileコマンドを用います。
$ apt-file search zlib.h
上記を実行すると、5000個近くの結果が表示されます。
これでは、どのパッケージをインストールすべきかわかりません。
フルパスで指定してみましょう。
zlib.hは、C言語のヘッダファイルです。
そのため、フルパスは「/usr/include/zlib.h」となります。
検索した結果は、以下。
$ apt-file search /usr/include/zlib.h zlib1g-dev: /usr/include/zlib.h $
一つに絞ることができました。
それでは、このパッケージの内容を見てみます。
$ apt info zlib1g-dev Package: zlib1g-dev Version: 1:1.2.11.dfsg-2ubuntu1.3 Priority: optional Section: libdevel Source: zlib Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Mark Brown <broonie@debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 606 kB Provides: libz-dev Depends: zlib1g (= 1:1.2.11.dfsg-2ubuntu1.3), libc6-dev | libc-dev Conflicts: zlib1-dev Homepage: http://zlib.net/ Download-Size: 155 kB APT-Sources: http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages Description: 圧縮ライブラリ - 開発キット zlib は gzip と PKZIP で使われている deflate 圧縮法を実装したライブラリ です。このパッケージは開発をサポートするファイルが含まれています。
これで問題ありません。
あとは、このパッケージをインストールするだけです。
以上、apt-fileの使い方を説明しました。