【Linux FAQ】あるファイルが、どのパッケージに含まれるかを調べるにはどうすればいいですか?

Linux便利技

Ubuntu/Debian系なら「dlocate」や「apt-file」、Fedoraなら「dnf provides」、RHEL/CentOSなら「yum provides」を使います。

dlocate – Ubuntu/Debian系でインストール済みのファイル名から調べる

Ubuntuなどにインストール済みのファイルがどのパッケージに含まれているかを調べるなら、「dlocate」コマンドを用いるのが高速です。以下のコマンドでインストールしておきます。

sudo apt install -y dlocate

/usr/bin/gcc」が含まれるパッケージを検索するには、以下のように実行します。

$ dlocate /usr/bin/gcc
gcc-4.9: /usr/bin/gcc-4.9
gcc-4.9: /usr/bin/gcc-ar-4.9
gcc-4.9: /usr/bin/gcc-nm-4.9
gcc-4.9: /usr/bin/gcc-ranlib-4.9
gcc-5: /usr/bin/gcc-5
gcc-5: /usr/bin/gcc-ar-5
gcc-5: /usr/bin/gcc-nm-5
gcc-5: /usr/bin/gcc-ranlib-5
gcc: /usr/bin/gcc
gcc: /usr/bin/gcc-ar
gcc: /usr/bin/gcc-nm
gcc: /usr/bin/gcc-ranlib
gcc-6: /usr/bin/gcc-6
gcc-6: /usr/bin/gcc-ar-6
gcc-6: /usr/bin/gcc-nm-6
gcc-6: /usr/bin/gcc-ranlib-6
gcc-7: /usr/bin/gcc-7
gcc-7: /usr/bin/gcc-ar-7
gcc-7: /usr/bin/gcc-nm-7
gcc-7: /usr/bin/gcc-ranlib-7

apt-file search – Ubuntu/Debian系で未インストールのファイル名から調べる

Ubuntuなどで未インストールのファイルを含むパッケージを調べるには、「apt-file」コマンドを使います。以下のコマンドでインストールし、データベースをアップデートします。

sudo apt install -y apt-file
sudo apt-file update

たとえば「avcodec.h」を含むファイルを調べるには、以下のように実行します。部分一致なので、「libavcodec.html」なども検索結果に含まれます。

$ apt-file search avcodec.h
ffmpeg-doc: /usr/share/doc/ffmpeg/manual/libavcodec.html
libaubio-dev: /usr/include/aubio/io/source_avcodec.h
libavcodec-dev: /usr/include/x86_64-linux-gnu/libavcodec/avcodec.h
libmyth-dev: /usr/include/mythtv/libavcodec/avcodec.h
libvlccore-dev: /usr/include/vlc/plugins/vlc_avcodec.h
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/cs/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/de/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/en/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/fr/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/hu/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/it/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/pl/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/ru/menc-feat-enc-libavcodec.html
mplayer-doc: /usr/share/doc/mplayer-doc/HTML/zh_CN/menc-feat-enc-libavcodec.html

dnf provides – Fedoraでファイル名から調べる

Fedoraでファイル名からパッケージを検索するには、「dnf provides」を用います。apt-fileと異なり、完全に一致したものを検索します。以下の例のようにワイルドカード(*)を使ってパターンマッチさせることができます。

$ dnf provides '*/bin/gcc'
メタデータの期限切れの確認は、2:33:55 時間前の 2017年10月08日 12時49分53秒 に実施しました。
gcc-7.1.1-3.fc26.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
リポジトリ        : @System

gcc-7.2.1-2.fc26.i686 : Various compilers (C, C++, Objective-C, Java, ...)
リポジトリ        : updates
(以下略)

yum provides – RHEL/CentOSでファイル名から調べる

RHELやCentOSでは「yum provides」を使います。使い方は「dnf provides」と同じです。

$ yum provides '*/bin/gcc'
読み込んだプラグイン:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
gcc-4.8.5-16.el7.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
リポジトリー        : base
一致          :
ファイル名    : /usr/bin/gcc
(以下略)

更新履歴

2017-10-08 Ubuntu 17.10、Ubuntu 16.04、Fedora 26、CentOS 7で動作を確認

Linux便利技
\シェアお願いします/
LFI

コメント

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