よく忘れるので備忘を兼ね、記事おこし。
rpm -qf
rpm -q –whatprovides
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
引数に与えた順に表示されますので、
どちらがどちらかのパッケージのモノかは順序でわかります。
/etc/ssh/sshd_config → openssh-server /etc/ssh/ssh_config → openssh-clients
$ 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
以上です。