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コマンドのオプションです。