【Ubuntu】パッケージ検索ツールapt-fileのインストール

【Ubuntu】パッケージ検索ツールapt-fileのインストール サーバー

「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の使い方を説明しました。

タイトルとURLをコピーしました