yum/rpmでファイルがどのパッケージに含まれるか、逆にパッケージにどのファイルが含まれるのかを調べる
Pocket

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
Sponsored Links

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
...

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

This article has 1 comments

  1. Pingback: apt/dpkgでファイルがどのパッケージに含まれるか、逆にパッケージにどのファイルが含まれるのかを調べる | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*