yum/rpmを使っていて、指定したファイル名がどのパッケージに含まれるのか、その逆に指定したパッケージにはどのようなファイルが含まれるのかを調べる必要があったので、備忘で残しておく。
1.指定したファイル名がどのパッケージに含まれるかを調べる
指定したファイル名がどのパッケージに含まれるかを調べる場合、yumで行う場合は「yum provides」を利用する。
この時、ファイル名はフルPATHでなくても問題ない。
yum provides ファイル名
[root@BS-PUB-CENT7-01 ~]# yum provides */httpd.conf 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.jaist.ac.jp * epel: mirror.ehost.vn * extras: mirror.qoxy.com * updates: mirror.vodien.com 389-admin-1.1.46-1.el7.x86_64 : 389 Administration Server (admin) リポジトリー : epel 一致 : ファイル名 : /etc/dirsrv/admin-serv/httpd.conf erlang-examples-R16B-03.18.el7.x86_64 : Examples for some Erlang modules リポジトリー : epel 一致 : ファイル名 : /usr/lib64/erlang/lib/inets-5.9.8/examples/server_root/conf/httpd.conf httpd-2.4.6-88.el7.centos.x86_64 : Apache HTTP Server リポジトリー : base 一致 : ファイル名 : /etc/httpd/conf/httpd.conf ファイル名 : /usr/lib/tmpfiles.d/httpd.conf python2-certbot-apache-0.29.1-1.el7.noarch : The apache plugin for certbot リポジトリー : epel 一致 : ファイル名 : /usr/lib/python2.7/site-packages/certbot_apache/tests/testdata/centos7_apache/apache/httpd/conf/httpd.conf ファイル名 : /usr/lib/python2.7/site-packages/certbot_apache/tests/testdata/gentoo_apache/apache/apache2/httpd.conf httpd-2.4.6-88.el7.centos.x86_64 : Apache HTTP Server リポジトリー : @base 一致 : ファイル名 : /etc/httpd/conf/httpd.conf ファイル名 : /usr/lib/tmpfiles.d/httpd.conf
インストール済みのrpmパッケージから調べる場合は、以下のようにrpmコマンドから調べることもできる。
こちらはフルPATHで指定してやる必要があるので注意。
rpm -qf ファイルPATH
[root@BS-PUB-CENT7-01 ~]# rpm -qf /etc/httpd/conf/httpd.conf httpd-2.4.6-88.el7.centos.x86_64
2.指定したパッケージにどのようなファイルが含まれているかを調べる
先ほどとは逆に、指定したパッケージにどのようなファイルが含まれているかリストにして出力する場合。
yumで調べる場合、残念ながらCentOS 7までのyumだとyum-utilsが必要になるようだ(dnfでは機能が組み込まれているので、RHEL8/CentOS 8以降ならいらないと思われる)。
yum-utilsは以下のコマンドでインストールできる。
sudo yum install yum-utils
後は、以下のコマンドを実行すればパッケージに含まれるファイルの一覧が取得できる。
repoquery -l パッケージ名 dnf repoquery -l パッケージ名 # dnfの場合
[root@BS-PUB-CENT7-01 ~]# repoquery -l httpd /etc/httpd /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.d/README /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf ...
インストール済のrpmパッケージから調べる場合は、以下のようにする。
rpm -ql パッケージ名
[root@BS-PUB-CENT7-01 ~]# rpm -ql httpd /etc/httpd /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.d/README /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf ...
