このエントリーをはてなブックマークに追加

Linuxを使用していると、あるファイルが どのrpmパッケージに含まれているのかを知りたくなることが たまにあります。

rpm(や、yum)でインストールされたものであれば、 以下のコマンドでどのrpmパッケージに含まれていたものかを 確認することが出来ます。

$ rpm -qf <ファイルパス>

または

$ rpm -q --whatprovides <ファイルパス>

whatprovidesオプションよりもfの方が短いので、 以下では、fオプションを利用しています。 ディストリビューションによって、もしもfが使えなかったら whatprovidesオプションを使ってみてください。

たとえば、/etc/ssh/sshd_configと/etc/ssh/ssh_configの二つのファイルが、 どのパッケージに含まれるかを調べるためには、以下のようにコマンドを実行します。

$ rpm -qf /etc/ssh/sshd_config
openssh-server-5.3p1-81.el6.x86_64
$ rpm -qf /etc/ssh/ssh_config
openssh-clients-5.3p1-81.el6.x86_64

いっぺんに問い合わせることも出来ます。

$ rpm -qf /etc/ssh/ssh_config /etc/ssh/sshd_config
openssh-clients-5.3p1-81.el6.x86_64
openssh-server-5.3p1-81.el6.x86_64

引数に与えた順に表示されますので、 どちらがどちらかのパッケージのモノかは順序でわかります。

$ rpm -qf /etc/ssh/sshd_config /etc/ssh/ssh_config
openssh-server-5.3p1-81.el6.x86_64
openssh-clients-5.3p1-81.el6.x86_64

もっといっぺんにワイルドカードで調べることもできます。

$ rpm -qf /etc/ssh/*
openssh-5.3p1-81.el6.x86_64
openssh-clients-5.3p1-81.el6.x86_64
ファイル /etc/ssh/ssh_host_dsa_key はどのパッケージにも属していません。
ファイル /etc/ssh/ssh_host_dsa_key.pub はどのパッケージにも属していません。
ファイル /etc/ssh/ssh_host_key はどのパッケージにも属していません。
ファイル /etc/ssh/ssh_host_key.pub はどのパッケージにも属していません。
ファイル /etc/ssh/ssh_host_rsa_key はどのパッケージにも属していません。
ファイル /etc/ssh/ssh_host_rsa_key.pub はどのパッケージにも属していません。
openssh-server-5.3p1-81.el6.x86_64
ファイル /etc/ssh/sshd_config~ はどのパッケージにも属していません。 

ほかのファイルでも試してみます。 yumの設定ファイルの一つである/etc/yum.repos.d/CentOS-Base.repoは OSの本体に組み込まれていることがわかります。

$ rpm -qf /etc/yum.repos.d/CentOS-Base.repo 
centos-release-6-3.el6.centos.9.x86_64

SELinuxの設定ファイルはselinux-policyパッケージ

$ rpm -qf /etc/selinux/config 
selinux-policy-3.7.19-155.el6_3.noarch

/etc/wgetrcはwgetインストール時にインストールされたもののようです。

$ rpm -qf /etc/wgetrc 
wget-1.12-1.4.el6.x86_64

以上、簡単ですが、知っておくと便利なrpmコマンドのオプションです。




記事一覧へ