- 1 はじめに
- 2 検証環境
- 3 オプション一覧
- 4 変更履歴を表示する方法(--changelog)
- 5 パッケージに含まれる設定ファイルを表示する方法(-c)
- 6 パッケージに含まれるドキュメントファイルを表示する方法(--docfiles )
- 7 パッケージの情報を表示する方法(-i)
- 8 パッケージのインストール履歴を表示する方法(--last)
- 9 パッケージに含まれるファイル一覧を表示する方法(-l)
- 10 パッケージの特定の情報を取り出す方法(--queryformat)
- 11 パッケージのインストール/アンインストール時に実行するスクリプトを表示する方法(--scripts)
- 12 パッケージに含まれる全てのファイルを表示する方法
- Z 参考情報
1 はじめに
rpmコマンドの--query-optionsオプションは、パッケージに関する様々な情報を表示するためのオプションです。ここでは、--query-optionsオプションを使用してパッケージに関するさまざまな情報を表示してみます。
2 検証環境
AlmaLinux版数は以下のとおりです。
[root@server ~]# cat /etc/redhat-release AlmaLinux release 8.6 (Sky Tiger)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 4.18.0-372.9.1.el8.x86_64
rpmの版数は以下のとおりです。
[root@server ~]# rpm --version RPM バージョン 4.14.3
3 オプション一覧
query-optionsの一覧は以下のとおりです。
[root@server ~]# man rpm -snip- query-options(検索オプション) [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump] [--filesbypkg] [-i,--info] [--last] [-l,--list] [--provides] [--qf,--queryformat QUERYFMT] [-R,--requires] [--scripts] [-s,--state] [--triggers,--triggerscripts]
4 変更履歴を表示する方法(--changelog)
--changelogは、パッケージの変更履歴を表示するオプションです。ここでは、httpdパッケージの変更履歴を確認してみます。左端に*印の行が変更日付と変更者名を表しています。-印は変更内容を表しています。
[root@server ~]# rpm -q --changelog httpd * 土 3月 18 2023 Lubo? Uhliarik <luhliari@redhat.com> - 2.4.37-51.5 - Resolves: #2177747 - CVE-2023-25690 httpd:2.4/httpd: HTTP request splitting with mod_rewrite and mod_proxy * 火 1月 31 2023 Lubo? Uhliarik <luhliari@redhat.com> - 2.4.37-51.1 - Resolves: #2165967 - prevent sscg creating /dhparams.pem - Resolves: #2165976 - CVE-2006-20001 httpd: mod_dav: out-of-bounds read/write of zero byte - Resolves: #2165977 - CVE-2022-37436 httpd: mod_proxy: HTTP response splitting - Resolves: #2165978 - CVE-2022-36760 httpd: mod_proxy_ajp: Possible request smuggling -snip-
5 パッケージに含まれる設定ファイルを表示する方法(-c)
-cは、パッケージに含まれる設定ファイルの一覧を表示するオプションです。ここでは、httpdパッケージに含まれる設定ファイルの一覧を表示してみます。
[root@server ~]# rpm -qc httpd /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf -snip-
6 パッケージに含まれるドキュメントファイルを表示する方法(--docfiles )
--docfilesは、パッケージに含まれるドキュメントファイル一覧を表示するオプションです。ここでは、httpdパッケージに含まれるドキュメントファイル一覧を表示してみます。
[root@server ~]# rpm -q --docfiles httpd /usr/share/doc/httpd/ABOUT_APACHE /usr/share/doc/httpd/CHANGES /usr/share/doc/httpd/LICENSE /usr/share/doc/httpd/NOTICE /usr/share/doc/httpd/README -snip-
7 パッケージの情報を表示する方法(-i)
-iは、パッケージの情報を表示するオプションです。ここでは、httpdパッケージの情報を表示してみます。
[root@server ~]# rpm -qi httpd Name : httpd Version : 2.4.37 Release : 51.module_el8.7.0+3405+9516b832.1 Architecture: x86_64 Install Date: 2023年03月31日 21時26分04秒 Group : System Environment/Daemons Size : 4500255 License : ASL 2.0 Signature : RSA/SHA256, 2023年02月21日 20時19分50秒, Key ID 51d6647ec21ad6ea Source RPM : httpd-2.4.37-51.module_el8.7.0+3405+9516b832.1.src.rpm Build Date : 2023年02月21日 19時24分32秒 Build Host : x64-builder01.almalinux.org Relocations : (not relocatable) Packager : AlmaLinux Packaging Team <packager@almalinux.org> Vendor : AlmaLinux URL : https://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
8 パッケージのインストール履歴を表示する方法(--last)
--lastは、パッケージのインストール履歴を表示するオプションです。インストール履歴を確認すると、最後にbcパッケージがインストールされたことがわかります。
[root@server ~]# rpm -qa --last |head -n 3 bc-1.07.1-5.el8.x86_64 2023年05月22日 21時56分53秒 bind-9.11.36-5.el8_7.2.x86_64 2023年05月05日 20時36分33秒 mailx-12.5-29.el8.x86_64 2023年04月22日 20時50分07秒 -snip-
9 パッケージに含まれるファイル一覧を表示する方法(-l)
-lは、パッケージに含まれるファイル一覧を表示するオプションです。ここはで、httpdパッケージに含まれるファイル一覧を表示してみます。
[root@server ~]# rpm -ql httpd /etc/httpd/conf /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf -snip-
10 パッケージの特定の情報を取り出す方法(--queryformat)
--queryformatは、パッケージ情報(名前やサイズ等)のフォーマットを指定するためのオプションです。
httpdパッケージの名前を表示してみます。
[root@server ~]# rpm -q httpd --queryformat '%{NAME}\n' httpd
httpdパッケージの名前、バージョンを表示してみます。
[root@server ~]# rpm -q httpd --queryformat '%{NAME}-%{VERSION}\n' httpd-2.4.37
httpdパッケージの名前とパッケージ提供元のURLを表示してみます。
[root@server ~]# rpm -q httpd --queryformat '%{NAME}:%{URL}\n' httpd:https://httpd.apache.org/
httpdパッケージの名前とライセンスを表示してみます。
[root@server ~]# rpm -q httpd --queryformat '%{NAME}:%{LICENSE}\n' httpd:ASL 2.0
httpdパッケージの名前とパッケージ提供元を表示してみます。
[root@server ~]# rpm -q httpd --queryformat '%{NAME}:%{VENDOR}\n' httpd:AlmaLinux
最後にシステムにインスールされている全てのパッケージ名とサイズを表示してみます。
[root@server ~]# rpm -qa --queryformat "%{NAME} %{SIZE}\n" ghc-mtl 222647 libXxf86vm 26424 tzdata 1891990 -snip
11 パッケージのインストール/アンインストール時に実行するスクリプトを表示する方法(--scripts)
--scriptsは、パッケージに含まれるインストールやアンインストール時に実行するスクリプトを表示するオプションです。ここでは、chronyパッケージに含まれるスクリプトを表示してみます。以下の実行結果より、4種類のスクリプトが実行されることがわかります。
- preinstall :インストール前に実行
- postinstall :インストール完了後に実行
- preuninstall:アンインストール前に実行
- postuninstall :アンインストール完了後に実行
[root@server ~]# rpm -q --scripts chrony preinstall scriptlet (using /bin/sh): getent group chrony > /dev/null || /usr/sbin/groupadd -r chrony getent passwd chrony > /dev/null || /usr/sbin/useradd -r -g chrony \ -d /var/lib/chrony -s /sbin/nologin chrony : postinstall scriptlet (using /bin/sh): # fix PIDFile in local chronyd.service on upgrades from chrony < 3.3-2 if grep -q 'PIDFile=/var/run/chronyd.pid' \ /etc/systemd/system/chronyd.service 2> /dev/null && \ ! grep -qi '^[ '$'\t'']*pidfile' /etc/chrony.conf 2> /dev/null then sed -i '/PIDFile=/s|/run/|/run/chrony/|' \ /etc/systemd/system/chronyd.service fi # workaround for late reload of unit file (#1614751) /usr/bin/systemctl daemon-reload if [ $1 -eq 1 ] ; then # Initial installation systemctl --no-reload preset chronyd.service chrony-wait.service &>/dev/null || : fi preuninstall scriptlet (using /bin/sh): if [ $1 -eq 0 ] ; then # Package removal, not upgrade systemctl --no-reload disable --now chronyd.service chrony-wait.service &>/dev/null || : fi postuninstall scriptlet (using /bin/sh): if [ $1 -ge 1 ] ; then # Package upgrade, not uninstall systemctl try-restart chronyd.service &>/dev/null || : fi
12 パッケージに含まれる全てのファイルを表示する方法
--filesbypkgは、パッケージに含まれる全てのファイルを表示するオプションです。
[root@server ~]# rpm -q --filesbypkg httpd httpd /etc/httpd/conf httpd /etc/httpd/conf.d/autoindex.conf httpd /etc/httpd/conf.d/userdir.conf httpd /etc/httpd/conf.d/welcome.conf httpd /etc/httpd/conf.modules.d -snip-