コマンドのパッケージを探したり、パッケージのファイル一覧を取得する方法

スポンサーリンク
スポンサーリンク

CentOS/Ubuntuのパッケージ管理で、次のことを行う方法です。

・システム上のファイルやコマンドは、どのパッケージでインストールされたか調べる
・特定のファイルやコマンドを入れるには、どのパッケージをインストールすれば良いか調べる
・パッケージ(インストール済み)でインストールされたファイルはどれかリストアップする
・パッケージ(未インストール)でインストールされるファイルを調べる

システム上のファイルやコマンドは、どのパッケージでインストールされたか調べる

CentOS

次の手順で調べます。

$ rpm -qf ファイル・コマンドのフルパス
rpm名が表示されます
$ yum list installed rpm名
パッケージ名が「インストール済みパッケージ」または「Installed Packages」の行の次に表示されます

「ファイル・コマンドのフルパス」で指定するものは、シンボリックリンクでは無い方が良いです。

実行例です。

$ rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.2.15-39.el6.centos.x86_64
$ yum list installed httpd-2.2.15-39.el6.centos.x86_64
読み込んだプラグイン:downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: ftp.iij.ad.jp
インストール済みパッケージ
httpd.x86_64                               2.2.15-39.el6.centos                                @base

Ubuntu

次の手順で調べます。

$ dpkg -S ファイル・コマンドのフルパス
パッケージ名:ファイル・コマンドのフルパス が表示されます。

「ファイル・コマンドのフルパス」で指定するものは、シンボリックリンクはダメです。

実行例です。

$ dpkg -S /etc/apache2/apache2.conf
apache2: /etc/apache2/apache2.conf

特定のファイルやコマンドを入れるには、どのパッケージをインストールすれば良いか調べる

CentOS

次の手順で調べます。

$ yum provides ファイル・コマンドのフルパス
または
$ yum provides */ファイル・コマンド名
rpmパッケージ名が表示されます
$ yum list rpmパッケージ名
パッケージ名が「インストール済みパッケージ」または「Installed Packages」の行の次に表示されます

ファイル・コマンドのフルパスが分かっていれば、yum provides で指定します。
フルパスが分からない場合は、*/ファイル・コマンド名 で指定します。

実行例です。

$ yum provides /etc/init.d/ntpd
Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
ntp-4.2.6p5-1.el6.centos.x86_64 : The NTP daemon and utilities
Repo        : installed
Matched from:
Other       : Provides-match: /etc/init.d/ntpd
$ yum list ntp-4.2.6p5-1.el6.centos.x86_64
Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
Installed Packages
ntp.x86_64                         4.2.6p5-1.el6.centos                         @anaconda-CentOS-201311272149.x86_64/6.5

備考:

yum provides */ファイル・コマンド名 の形式では、指定したファイルを含むパッケージが複数見つかることがあるので、ファイル・コマンドのフルパスが分かっていれば、それを指定した方が確実です。
例えば、yum provides */sqlite3.h とすると、下記のように複数パッケージが見つかります。

$ yum provides */sqlite3.h
読み込んだプラグイン:downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: ftp.iij.ad.jp
xulrunner-devel-17.0.10-1.el6.centos.x86_64 : Development files for Gecko
リポジトリー        : base
一致          :
ファイル名    : /usr/include/xulrunner-17.0.10/sqlite3.h
xulrunner-devel-17.0.10-1.el6.centos.i686 : Development files for Gecko
リポジトリー        : base
一致          :
ファイル名    : /usr/include/xulrunner-17.0.10/sqlite3.h
sqlite-devel-3.6.20-1.el6.x86_64 : Development tools for the sqlite3 embeddable SQL database engine
リポジトリー        : base
一致          :
ファイル名    : /usr/include/sqlite3.h
sqlite-devel-3.6.20-1.el6.i686 : Development tools for the sqlite3 embeddable SQL database engine
リポジトリー        : base
一致          :
ファイル名    : /usr/include/sqlite3.h

また、yum providesで指定する「ファイル・コマンドのフルパス」は、パッケージインストール時にハードリンクやシンボリックリンクとなるものは、見つからないことがあります。
例えば、mysql-server のインストールで ハードリンク /etc/rc.d/init.d/mysqld , /etc/init.d/mysqld が出来ます。
これらはハードリンクですが、下記のように一方のみ、yum providesで検索成功します。

成功 : yum provides /etc/rc.d/init.d/mysqld
失敗 : yum provides /etc/init.d/mysqld

Ubuntu

apt-fileコマンドを使います。

apt-file をインストールします。

sudo apt-get install apt-file

毎回 apt-file使用前に下記を実行します。

apt-file update

下記を実行します。

$ apt-file search ファイル・コマンドのフルパス
パッケージ名:ファイル・コマンドのフルパス が表示されます。
または
$ apt-file -x search "ファイル・コマンド名$"
ファイル・コマンド名を含むパッケージが表示されます。
表示は、パッケージ名:ファイル・コマンド名 の書式で列挙されます。

実行例です。

$ apt-file search /usr/bin/sqlite3
sqlite3: /usr/bin/sqlite3

$ apt-file -x search "mysqld$"
mariadb-server-core-5.5: /usr/sbin/mysqld
mysql-server-5.5: /etc/apparmor.d/usr.sbin.mysqld
mysql-server-5.6: /etc/apparmor.d/usr.sbin.mysqld
mysql-server-core-5.5: /usr/sbin/mysqld
mysql-server-core-5.6: /usr/sbin/mysqld
percona-xtradb-cluster-server-5.5: /usr/sbin/mysqld

パッケージ(インストール済み)でインストールされたファイルはどれかリストアップする

CentOS

rpmコマンドを使用する場合と、repoqueryコマンドを使用する場合の2通りあります。

まず、rpmコマンドの場合です。

$ rpm -ql パッケージ名
指定されたパッケージでインストールされたファイル一覧が表示されます。

実行例です。

$ rpm -ql sqlite
/usr/bin/sqlite3
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
/usr/share/doc/sqlite-3.6.20
/usr/share/doc/sqlite-3.6.20/README
/usr/share/man/man1/sqlite3.1.gz

次に、repoqueryコマンドを使用する場合です。

repoqueryコマンドを使用するには、yum-utilsパッケージのインストールが必要です。

yum install yum-utils

コマンドは下記で実行します。

$ repoquery --installed --list パッケージ名
指定されたパッケージでインストールされたファイル一覧が表示されます。

実行例です。

$ repoquery --installed --list sqlite
/usr/bin/sqlite3
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
/usr/share/doc/sqlite-3.6.20
/usr/share/doc/sqlite-3.6.20/README
/usr/share/man/man1/sqlite3.1.gz

Ubuntu

下記を実行します。

$ dpkg -L パッケージ名
パッケージでインストールされたファイルが表示されます。

実行例です。

$ dpkg -L firefox
/.
/usr
/usr/lib
/usr/lib/firefox
/usr/lib/firefox/defaults
/usr/lib/firefox/defaults/pref
/usr/lib/firefox/defaults/pref/channel-prefs.js
/usr/lib/firefox/defaults/pref/vendor-gre.js
/usr/lib/firefox/libplds4.so
/usr/lib/firefox/firefox
/usr/lib/firefox/libfreebl3.chk
/usr/lib/firefox/libnssdbm3.chk
/usr/lib/firefox/libnssckbi.so
:
:

パッケージ(未インストール)でインストールされるファイルを調べる

CentOS
repoqueryコマンドを使用します。
使用するには、yum-utilsパッケージのインストールが必要です。

yum install yum-utils

コマンドは下記で実行します。

$ repoquery パッケージ名
rpmパッケージが表示されます
$ repoquery --list rpmパッケージ名
ファイル一覧が表示されます

実行例です。

$ repoquery sqlite
sqlite-0:3.6.20-1.el6.i686
sqlite-0:3.6.20-1.el6.x86_64
$ repoquery --list sqlite-0:3.6.20-1.el6.x86_64
/usr/bin/sqlite3
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
/usr/share/doc/sqlite-3.6.20
/usr/share/doc/sqlite-3.6.20/README
/usr/share/man/man1/sqlite3.1.gz

Ubuntu

下記を実行します。

$ apt-file -F show パッケージ名
パッケージでインストールされたファイルが表示されます。

実行例です。

$ apt-file -F show sqlite3
sqlite3: /usr/bin/sqlite3
sqlite3: /usr/share/doc/sqlite3/changelog.Debian.gz
sqlite3: /usr/share/doc/sqlite3/copyright
sqlite3: /usr/share/man/man1/sqlite3.1.gz

参考

第04回 「apt-get, dpkg コマンドでパッケージ管理」
APT HOWTO (Obsolete Documentation)
わからないファイルのパッケージを探すyum providesとapt-file search:学びの道案内:So-netブログ
rpmコマンドの便利な使い方 パソコン鳥のブログ
(Linux)パッケージ管理コマンドの使い方 – OasisHalfmoon
yumでインストールされたファイル一覧を表示する方法 repoquery –list
ubuntu コンパイル入門 ~ PCまわりクイックメモ

コメント

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