このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】rpmコマンドでの情報照会

rpmコマンドでの情報照会

 rpmコマンドは、Red Hat系Linuxディストリビューション(例:CentOS、Fedora)で使用されるパッケージ管理ツールです。-q--query)モードを利用すると、指定したパッケージに関する情報を照会できます。このモードを使って、パッケージがシステムにインストールされているか、またその詳細情報を確認することができます。

rpmコマンド(情報照会)の概要

 例えば、rpm -qコマンドを使用して特定のパッケージがインストールされているかどうかを確認できます。パッケージがインストールされている場合、そのパッケージ名やバージョン情報が表示されます。以下は基本的な構文です。

【構文】
rpm -q [オプション] [引数]

-qモードと併用する主なオプション

以下は、-qモードと併用される主なオプションとその説明を表にまとめたものです。

オプション(ショート)オプション(ロング)引数説明
-a--allなしシステムにインストールされているすべてのパッケージをリスト表示します。
-i--infoパッケージ名指定したパッケージの詳細情報を表示します。
-R--requiresパッケージ名指定したパッケージが依存するファイルやライブラリ、パッケージを表示します。
-l--listパッケージ名指定したパッケージに関連するファイルやディレクトリをリスト表示します。
-f--fileファイルパス指定したファイルがどのパッケージに含まれているかを表示します。
-p--packageRPMファイルパスインストールされていないRPMパッケージファイルの詳細情報を表示します。
-qモードと併用する主なオプション

コマンドの使用例と解説(CentOSの場合)

1.partedパッケージのインストールの有無を確認する。

・「rpm -q parted」コマンドを実行します。

 このコマンドは、partedパッケージがインストールされているかどうかを確認します。partedはディスクパーティショニングを行うためのコマンドです。

[user01@localhost ~]$ rpm -q parted
parted-3.1-32.el7.x86_64

2.httpdパッケージのインストールの有無を確認する。

・「rpm -q httpd」コマンドを実行します。

このコマンドは、httpd(Webサーバーパッケージ)がインストールされているかどうかを確認します。

[user01@localhost ~]$ rpm -q httpd
パッケージ httpd はインストールされていません。

3.間違ったパッケージ名を指定する。

・「rpm -q part」コマンドを実行します。

 パッケージ名を間違って入力した場合(例: part)、パッケージが見つからない旨のメッセージが表示されます。このメッセージは、パッケージがインストールされていない場合と同様なので、注意が必要です。

[user01@localhost ~]$ rpm -q part
パッケージ part はインストールされていません。

4.-aオプションを付け、パイプ機能とgrepコマンドを併用して検索結果を絞り込む。

・「rpm -qa | grep part」コマンドを実行します。

 -aオプションを使用してシステム内のすべてのインストール済みパッケージをリストし、その結果をgrepコマンドで絞り込みます。これにより、パッケージ名が曖昧な場合でも正しいパッケージ名を特定できます。

[user01@localhost ~]$ rpm -qa | grep part
pyparted-3.9-15.el7.x86_64
parted-3.1-32.el7.x86_64
libblockdev-part-2.18-5.el7.x86_64
kpartx-0.4.9-136.el7_9.x86_64

5.partedパッケージの詳細情報を表示する。

・「rpm -qi parted」コマンドを実行します。

 -iオプションを使用して、partedパッケージの詳細情報(バージョン、リリース情報、依存関係など)を確認します。

[user01@localhost ~]$ rpm -qi parted
Name        : parted
Version     : 3.1
Release     : 32.el7
Architecture: x86_64
Install Date: 2023年12月31日 17時33分13秒
Group       : Applications/System
Size        : 2336852
License     : GPLv3+
Signature   : RSA/SHA256, 2020年04月04日 06時03分24秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : parted-3.1-32.el7.src.rpm
Build Date  : 2020年04月01日 13時00分49秒
Build Host  : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.gnu.org/software/parted
Summary     : The GNU disk partition manipulation program
Description :
The GNU Parted program allows you to create, destroy, resize, move,
and copy hard disk partitions. Parted can be used for creating space
for new operating systems, reorganizing disk usage, and copying data
to new hard disks.

6.partedパッケージの依存関係を確認する。

・「rpm -qR parted」コマンドを実行します。

 -Rオプションを使用して、partedパッケージが依存しているファイルやライブラリ、パッケージを確認します。ファイル名にlib~.soが含まれるファイルはライブラリです。

[user01@localhost ~]$ rpm -qR parted
/bin/sh
/bin/sh
/sbin/install-info
/sbin/install-info
/sbin/ldconfig
...(省略)...
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

7.partedパッケージ関連のファイルやディレクトリを確認する。

・「rpm -ql parted」コマンドを実行します。

 -lオプションを使って、partedパッケージによってインストールされたファイルやディレクトリの一覧を表示します。

[user01@localhost ~]$ rpm -ql parted
/lib64/libparted-fs-resize.so
/lib64/libparted-fs-resize.so.0
/lib64/libparted-fs-resize.so.0.0.0
/lib64/libparted.so.2
/lib64/libparted.so.2.0.0
/sbin/parted
/sbin/partprobe
/usr/share/doc/parted-3.1
/usr/share/doc/parted-3.1/API
/usr/share/doc/parted-3.1/AUTHORS
...(省略)...
/usr/share/locale/uk/LC_MESSAGES/parted.mo
/usr/share/locale/vi/LC_MESSAGES/parted.mo
/usr/share/locale/zh_CN/LC_MESSAGES/parted.mo
/usr/share/locale/zh_TW/LC_MESSAGES/parted.mo
/usr/share/man/man8/parted.8.gz
/usr/share/man/man8/partprobe.8.gz

8./sbin/partedファイルがどのパッケージに含まれているかを確認する。

・「rpm -qf /sbin/parted」コマンドを実行します。

-fオプションを使用して、指定したファイルがどのパッケージに含まれているかを確認できます。

[user01@localhost ~]$ rpm -qf /sbin/parted
parted-3.1-32.el7.x86_64

まとめ

 rpm -qモードとそのオプションは、Red Hat系Linuxディストリビューションにおいてパッケージ情報を詳細に管理するための重要なツールです。これを活用することで、システムにインストールされているパッケージの状態を簡単に把握し、必要に応じて詳細な情報を確認することができます。