技術(非IT系)

rpm インストール済み一覧の確認方法は?コマンドと表示例も!(rpm -qa・パッケージ検索・Linux管理など)

当サイトでは記事内に広告を含みます

Linuxサーバーを管理していると、「このサーバーに何がインストールされているか確認したい」「特定のパッケージが入っているか調べたい」という場面が頻繁に訪れます。

そのような場合に役立つのが、rpmコマンドのインストール済みパッケージ確認機能です。

この記事では、rpm -qaをはじめとするインストール済みパッケージの確認方法・検索方法・表示例・活用シナリオを丁寧に解説します。

日常的なLinux管理業務から、セキュリティ監査・システム移行まで役立つ内容を網羅していますので、ぜひ最後までお読みください。

rpm -qaでインストール済みパッケージを一覧表示する基本方法

それではまず、rpm -qaコマンドの基本的な使い方と表示内容について解説していきます。

「rpm -qa」はRed Hat系Linuxシステムにインストールされている全パッケージを一覧表示する最も基本的なコマンドです。

「-q」は照会(query)モード、「-a」は全パッケージ(all)を意味するオプションです。

rpm -qaの基本的な使い方

コマンド:rpm -qa

出力形式:パッケージ名-バージョン-リリース.アーキテクチャ

出力例:

bash-5.1.8-6.el9.x86_64

glibc-2.34-60.el9.x86_64

kernel-5.14.0-362.8.1.el9.x86_64

openssl-3.0.7-27.el9.x86_64

python3-3.9.18-3.el9.x86_64

出力されるパッケージ数は、最小構成のサーバーでも数百件、フル構成では1000件以上になることもあります。

そのため、grepコマンドと組み合わせて特定のパッケージを絞り込む使い方が実用的です。

出力は特定の順序ではなくインストール順などで表示されるため、「| sort」でアルファベット順に整理すると見やすくなるでしょう。

rpm -qaの便利な組み合わせコマンド

rpm -qaは単体で使うよりも、他のコマンドと組み合わせることで真価を発揮します。

よく使うrpm -qaの組み合わせ

特定パッケージを検索

rpm -qa | grep python

アルファベット順に並び替え

rpm -qa | sort

インストール済みパッケージ数を確認

rpm -qa | wc -l

ファイルに保存

rpm -qa > installed_list.txt

インストール日時が新しい順に表示

rpm -qa –last

インストール日時が新しい順に上位20件

rpm -qa –last | head -20

「rpm -qa –last」はシステムに最近どのようなパッケージが追加・更新されたかを確認するのに非常に便利です。

セキュリティインシデント後の調査や、変更管理の確認に活用できます。

「rpm -qa > ファイル名」でパッケージ一覧をファイルに保存しておくと、後で他のシステムと比較したり、再インストール時の参考にしたりできます。

rpm -qaのカスタム表示フォーマット

「–queryformat」オプションを使うことで、表示する情報の形式をカスタマイズできます。

カスタムフォーマットの例

名前とバージョンだけを表示

rpm -qa –queryformat “%{NAME} %{VERSION}\n”

名前・バージョン・インストール日時を表示

rpm -qa –queryformat “%{INSTALLTIME:date} %{NAME}-%{VERSION}\n” | sort

名前・サイズ・ライセンスを表示

rpm -qa –queryformat “%{NAME}\t%{SIZE}\t%{LICENSE}\n”

カスタムフォーマットを使いこなすことで、監査レポートや資産管理表の作成が効率化されます。

インストールサイズ順に並べてディスク使用量の大きいパッケージを特定したり、ライセンス種別を一覧化してコンプライアンス確認を行ったりする使い方が実践的です。

rpm -qとrpm -qaの違い

「rpm -q パッケージ名」は特定のパッケージが存在するかどうかを確認する場合に使い、「rpm -qa」は全パッケージを一覧表示する場合に使います。

使い分けの例

httpdがインストールされているか確認

rpm -q httpd

インストールされていれば:httpd-2.4.51-7.el9.x86_64

インストールされていなければ:パッケージ httpd はインストールされていません

全パッケージ一覧から検索

rpm -qa | grep httpd

スクリプト内でパッケージの有無を確認する場合は「rpm -q パッケージ名」の戻り値(終了コード)を利用するのが便利です。

インストールされていれば終了コード0、インストールされていなければ終了コード1が返ります。

この特性を使って「if rpm -q パッケージ名 > /dev/null 2>&1; then (処理); fi」のような条件分岐スクリプトを作成できます。

特定パッケージの詳細情報を確認する方法

続いては、特定のパッケージについてより詳細な情報を確認する方法について確認していきます。

rpm -qi:パッケージの詳細情報を表示

「rpm -qi パッケージ名」コマンドは、特定パッケージの詳細なメタデータを表示します。

rpm -qi opensslの出力例(抜粋)

Name : openssl

Version : 3.0.7

Release : 27.el9

Architecture: x86_64

Install Date: 2024年 1月15日 月曜日 10時23分45秒

Group : System Environment/Libraries

Size : 1653287

License : OpenSSL and ASL 2.0

Signature : RSA/SHA256, …, Key ID …: OK

Summary : Utilities from the general purpose cryptography library

インストール日時が表示されるため、いつそのパッケージが導入されたかを事後確認できます。

ライセンス情報も含まれるため、オープンソースソフトウェアのライセンス管理にも活用できるでしょう。

署名(Signature)欄でGPG署名の状態も確認できるため、パッケージの正当性確認にも利用できます。

rpm -ql:パッケージに含まれるファイルの一覧

あるパッケージがどのファイルをシステムにインストールしているかを確認するには「rpm -ql」を使います。

コマンド例

rpm -ql bash

出力例(一部):

/usr/bin/bash

/usr/bin/bashbug

/usr/lib64/bash/

/usr/share/doc/bash/

/usr/share/man/man1/bash.1.gz

/etc/skel/.bash_logout

/etc/skel/.bash_profile

/etc/skel/.bashrc

この情報はパッケージのアンインストール時にどのファイルが削除されるかを事前に把握するのに役立ちます。

また、特定の設定ファイルや実行ファイルの場所を探す際にも活用できます。

「rpm -qlc パッケージ名」とすれば設定ファイルのみ、「rpm -qld パッケージ名」とすればドキュメントファイルのみを表示できます。

インストール済みパッケージの一覧をCSV形式で出力する

システム管理レポートや資産管理台帳の作成には、CSV形式での出力が便利です。

CSV形式での出力例

rpm -qa –queryformat “%{NAME},%{VERSION},%{RELEASE},%{ARCH},%{INSTALLTIME:date}\n” > packages.csv

出力されるCSV(イメージ):

bash,5.1.8,6.el9,x86_64,Mon Jan 15 10:23:45 2024

glibc,2.34,60.el9,x86_64,Mon Jan 15 10:23:46 2024

openssl,3.0.7,27.el9,x86_64,Mon Jan 15 10:25:12 2024

このCSVファイルはExcelやGoogleスプレッドシートに読み込むことで、パッケージ管理台帳として活用できます。

複数サーバーの一覧を統合して比較することで、環境差異の発見や標準化状況の把握が容易になるでしょう。

パッケージ検索と絞り込みの実践テクニック

続いては、rpmコマンドを使ったパッケージ検索と絞り込みの実践的なテクニックについて確認していきます。

grepを使った柔軟なパッケージ検索

「rpm -qa | grep キーワード」は特定のソフトウェアを素早く見つけるための基本テクニックです。

grepを使った検索例

Pythonに関連するパッケージを検索

rpm -qa | grep -i python

Javaに関連するパッケージを検索

rpm -qa | grep -i java

セキュリティ関連パッケージを検索

rpm -qa | grep -i ssl

複数キーワードで検索(OR条件)

rpm -qa | grep -E “python|perl|ruby”

特定バージョンのパッケージを検索

rpm -qa | grep “nginx-1.20”

「-i」オプションで大文字・小文字を区別せずに検索できるため、パッケージ名の大文字小文字が不確かな場合に便利です。

「grep -E」で正規表現を使った複数キーワード検索が可能になり、一度の操作で複数の関連パッケージを確認できます。

特定のファイルがどのパッケージに含まれるかを調べる

ファイルからパッケージを逆引きする「rpm -qf」は、トラブルシューティングで特に役立つテクニックです。

逆引き検索の例

コマンドが属するパッケージを調べる

rpm -qf /usr/bin/python3

出力例:python3-3.9.18-3.el9.x86_64

ライブラリファイルが属するパッケージを調べる

rpm -qf /usr/lib64/libssl.so.3

出力例:openssl-libs-3.0.7-27.el9.x86_64

設定ファイルが属するパッケージを調べる

rpm -qf /etc/httpd/conf/httpd.conf

不審なファイルを発見した際に「rpm -qf」で所属パッケージを確認し、正規パッケージに含まれるファイルかどうかを判断できます。

正規パッケージに属さないファイルが重要なディレクトリに存在する場合は、セキュリティリスクとして調査が必要です。

インストール日時でパッケージを絞り込む方法

特定の期間にインストールされたパッケージを確認したい場合は、「–last」オプションとheadコマンドを組み合わせます。

インストール日時による絞り込み

最近インストールされた順に全パッケージ表示

rpm -qa –last

最近インストールされた上位30件を表示

rpm -qa –last | head -30

古い順(インストールが古い順)に表示

rpm -qa –last | tail -30

「rpm -qa –last」の出力は「パッケージ名 インストール日時」の形式で表示されます。

セキュリティインシデントの発生日時前後にインストールされたパッケージを確認することで、不正インストールの追跡調査に活用できます。

複数サーバーのパッケージ管理と差異確認

続いては、複数のサーバー間でのパッケージ管理と環境差異の確認方法について確認していきます。

サーバー間のパッケージ差異を比較する方法

本番サーバーとステージング環境、または複数の本番サーバー間でパッケージの差異を確認するには、差分比較ツールを活用します。

サーバー間差異の確認手順

各サーバーでパッケージ一覧をファイルに保存

サーバーA:rpm -qa | sort > server_a_packages.txt

サーバーB:rpm -qa | sort > server_b_packages.txt

差分を比較

diff server_a_packages.txt server_b_packages.txt

Aにあって Bにないパッケージ

comm -23 server_a_packages.txt server_b_packages.txt

「diff」コマンドで差分を確認し、「comm」コマンドで一方にだけ存在するパッケージを抽出できます。

本番環境の一貫性を保つために、定期的に複数サーバーのパッケージ一覧を比較して差異を解消することが重要です。

Ansibleなどの構成管理ツールと組み合わせることで、この比較・修正プロセスを自動化することも可能です。

パッケージ一覧の定期的な記録と変更管理

システムの変更管理において、パッケージ一覧の定期的な記録は重要な実践です。

cronジョブを使って毎日または毎週自動的にパッケージ一覧をファイルに保存し、前回との差分をメールで通知する仕組みを作ることができます。

Gitリポジトリでパッケージ一覧のテキストファイルを管理することで、いつどのパッケージが追加・削除されたかの履歴を追跡することも可能です。

このような変更管理の仕組みは、コンプライアンス対応やセキュリティ管理の観点から非常に価値があります。

コンテナ環境でのrpmパッケージ確認

DockerコンテナやPodmanコンテナでもrpmコマンドは使えます。

Red Hat系のベースイメージ(UBI: Universal Base Image)を使ったコンテナでは、「docker exec コンテナ名 rpm -qa」でコンテナ内のパッケージ一覧を確認できます。

コンテナイメージのセキュリティスキャンにもrpmのパッケージ情報が活用されており、TrivyやClairなどのスキャナーはrpmデータベースを参照して脆弱性を検出します。

コンテナの軽量化のために不要なパッケージを特定・削除する際にも、「rpm -qa」で一覧を確認してから判断するプロセスが有効です。

まとめ

今回は、rpmコマンドを使ったインストール済みパッケージの確認方法・検索テクニック・詳細情報の表示・複数サーバー管理への応用について詳しく解説しました。

「rpm -qa」は全パッケージを一覧表示する最も基本的なコマンドで、grep・sort・wc・diffなどのコマンドと組み合わせることで強力なパッケージ管理ツールになります。

「rpm -qi」「rpm -ql」「rpm -qf」の使い分けをマスターすることで、パッケージの詳細情報確認・ファイルリスト表示・逆引き検索を自在に行えます。

定期的なパッケージ一覧の記録・比較によるサーバー間差異の確認・変更管理の仕組み構築が、安定した本番環境の維持につながります。

rpm -qaをはじめとするパッケージ確認コマンドを日常的に活用することで、Linuxシステムの透明性と管理品質を大きく向上させることができます。

ぜひ本記事を参考に、rpmを使ったパッケージ管理スキルを高めていただければ幸いです。