rpmコマンドで色々確認してみる
こんにちは、fです。
Red Hat系のディストリビューションで用いるパッケージ管理用のコマンドとして、rpmコマンドがあります。
パッケージインストールとしてはdnfやyumを使うことが多いですが、インストール以外の確認等でrpmコマンドを使うことも多い為、備忘も兼ねてオプションを少しまとめてみようと思います。
今回はAlmaLinux8.6、RPMのバージョン4.14.3の環境で確認してみます。
# cat /etc/almalinux-release
AlmaLinux release 8.6 (Sky Tiger)
# rpm --version
RPM バージョン 4.14.3
パッケージのインストール状況確認(-q, -a)
-q オプションでパッケージの検索(問い合わせ)を行うことができます。
確認系のオプションを使う時は基本的に -q を一緒に指定する必要があります。
以下のように-qの後にパッケージ名を指定すると、パッケージ名を表示してくれます。
# rpm -q rpm
rpm-4.14.3-23.el8.x86_64
インストールされていないパッケージ名を指定すると以下のようなメッセージが返りますので、インストール状況の確認にも使えます。
# rpm -q yum-utils
パッケージ yum-utils はインストールされていません。
インストールされている全パッケージの中から特定の名前を含むパッケージを検索したい場合、
-a オプションを指定してgrepで検索することでまとめて検索することができます。お好みでsortをつけてみるのもいいかもしれません。
# rpm -qa | grep kernel | sort
kernel-4.18.0-305.el8.x86_64
kernel-4.18.0-372.9.1.el8.x86_64
kernel-core-4.18.0-305.el8.x86_64
kernel-core-4.18.0-372.9.1.el8.x86_64
kernel-devel-4.18.0-305.el8.x86_64
kernel-devel-4.18.0-372.9.1.el8.x86_64
kernel-headers-4.18.0-372.9.1.el8.x86_64
kernel-modules-4.18.0-305.el8.x86_64
kernel-modules-4.18.0-372.9.1.el8.x86_64
kernel-tools-4.18.0-372.9.1.el8.x86_64
kernel-tools-libs-4.18.0-372.9.1.el8.x86_64
パッケージに含まれるファイルを確認(-l)
「このパッケージに含まれるファイルの一覧が見たい」という時には -l オプションを指定します。-qを入れるのも忘れずに。
# rpm -ql rpm
/etc/rpm
/usr/bin/rpm
/usr/bin/rpm2archive
/usr/bin/rpm2cpio
/usr/bin/rpmdb
(以下略)
パッケージによってはファイル一覧が大量に出力されますので、less等でじっくり一覧を眺めてみたり、
# rpm -ql rpm | less
「このファイルが含まれているか確認したい」と決まっているのであれば、grepしてみたりするといいかもしれません。
# rpm -ql rpm | grep bin
/usr/bin/rpm
/usr/bin/rpm2archive
/usr/bin/rpm2cpio
/usr/bin/rpmdb
/usr/bin/rpmkeys
/usr/bin/rpmquery
/usr/bin/rpmverify
対象のファイルがどのパッケージに含まれているか確認(-f)
先程とは逆に、「このファイルってどのパッケージに含まれているんだっけ?」という時には -f オプションを指定します。
# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.37-47.module_el8.6.0+2872+fe0ff7aa.1.alma.x86_64
適当に作成したファイルなどは当然どのパッケージにも含まれない為、以下のようなメッセージが返ります。
# touch hoge
# rpm -qf hoge
ファイル /root/hoge はどのパッケージにも属していません
パッケージの更新履歴を確認(–changelog)
パッケージを更新した後など、新しいバージョンにアップデートしたことでどう変わったか?という概要を –changelog で確認することができます。(ブログの仕様上ハイフン(-)が繋がっていますが、2つ指定します)
新しいバージョンの情報が上に来ていますので、直近の更新内容を確認したい場合はheadコマンドも組み合わせておくとよいでしょう。
# rpm -q --changelog rpm | head
* 火 4月 05 2022 Michal Domonkos <mdomonko@redhat.com> - 4.14.3-23
- Fix minor ABI regression in rpmcli.h (#1940895)
* 火 2月 15 2022 Michal Domonkos <mdomonko@redhat.com> - 4.14.3-22
- Fix spurious %transfiletriggerpostun execution (#2023693)
- Skip recorded symlinks in --setperms (#1900662)
* 月 1月 10 2022 Michal Domonkos <mdomonko@redhat.com> - 4.14.3-21
- Address covscan issues in binding sigs validation patch (#1958480)
パッケージの設定ファイル一覧を確認(-c)
今回この記事を作成するにあたり、manコマンドでrpmのマニュアルを眺めながら書いていたのですが
-qc を指定すると、パッケージに含まれる設定ファイルのみを表示させることができるようです。
使ったことはなかったのですが、せっかくなのでhttpdパッケージに含まれる設定ファイル一覧を出してみます。
# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-optional.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
確かに設定ファイル系の一覧が出力されています。
拡張子がconfのファイルだけでなく、logrotate.dのファイルなども出力してくれるようです。
今回は確認系のオプションに留めておきましたが、もちろんrpmコマンドでインストールやアンインストールを行うこともできます。
Red Hat Enterprise Linuxといえば9.0が5/18にリリースされましたが、
AlmaLinuxも9.0がリリースされたようです。9.0のコードネームはEmerald Pumaだとか。
まだ各クラウドのテンプレートで利用できるのはもう少し先の話になると思いますが、それにしても驚きの速さですね。
それではまた。