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を使ったパッケージ管理スキルを高めていただければ幸いです。