MENU

サーバーにインストール済みのパッケージをすばやく確認・特定する方法

「このサーバーに nginx は入っているか」「あのパッケージのバージョンは何だったか」——こうした確認作業は日常的に発生します。RPM 系ディストリ(RHEL 9・AlmaLinux・Rocky Linux・Fedora 等)では、コマンド 1 本で必要な情報を引き出せます。本記事では一覧表示から絞り込み・詳細確認・ファイル逆引きまで、実務でよく使う手順をまとめています。

目次

全インストール済みパッケージを一覧表示する

RPM データベースに登録されているすべてのパッケージを表示するには rpm -qa を使います。

rpm -qa

出力例:

glibc-2.34-60.el9.x86_64
kernel-5.14.0-284.11.1.el9_2.x86_64
openssh-server-8.7p1-34.el9.x86_64
nginx-1.20.1-14.el9_2.1.x86_64

RHEL 8 以降では dnf 経由でも同じ情報を取得できます。依存でインストールされたパッケージと、管理者が明示的に追加したパッケージを分けて把握できるため、棚卸し目的には dnf の方が適しています。

# 全パッケージ(依存インストール含む)
dnf list installed

# 管理者が明示的にインストールしたパッケージのみ
dnf history userinstalled

名前・キーワードで絞り込んで目的のパッケージを探す

パッケージ数が数百に上るサーバーで全件リストを目視で追うのは非効率です。grep で絞り込みます。

# "nginx" を含むパッケージを探す
rpm -qa | grep nginx

# 大文字小文字を区別しない場合
rpm -qa | grep -i nginx

「インストールされているかどうかだけ確認したい」場合は、パッケージ名を直接 rpm -q に渡す方が明確です。インストール済みなら名前とバージョンを返し、未インストールなら非ゼロの終了コードを返すため、シェルスクリプトの条件分岐にも活用できます。

# インストール済みなら名前+バージョン、未インストールならエラーを返す
rpm -q nginx

# シェルスクリプトで存在チェック
if rpm -q nginx &>/dev/null; then
    echo "nginx はインストール済みです"
else
    echo "nginx は未インストールです"
fi

バージョン・インストール日時・詳細情報を確認する

バージョン番号だけでなく、インストール日時やライセンス、パッケージの説明まで一括確認したいときは rpm -qi を使います。

rpm -qi nginx

出力例:

Name        : nginx
Version     : 1.20.1
Release     : 14.el9_2.1
Architecture: x86_64
Install Date: 2026年07月15日 10:23:41
Group       : System Environment/Daemons
Size        : 1691287
License     : BSD

複数パッケージのバージョンを一括比較したい場合は --queryformat--qf)で出力形式をカスタマイズできます。サーバー間の差分確認や、監査レポートの素材として使えます。

# 名前・バージョン・インストール日時をタブ区切りで出力
rpm -qa --queryformat "%{NAME}\t%{VERSION}-%{RELEASE}\t%{INSTALLTIME:date}\n" | sort

ファイルパスからインストール元パッケージを逆引きする

/usr/sbin/nginx はどのパッケージが配置したのか」を調べたいケースがあります。セキュリティ調査や設定ファイルの管理元を特定する場面で特に役立ちます。rpm -qf にファイルのフルパスを渡します。

# バイナリの所属パッケージを調べる
rpm -qf /usr/sbin/nginx

# 設定ファイルの所属パッケージを調べる
rpm -qf /etc/ssh/sshd_config

出力例:

nginx-1.20.1-14.el9_2.1.x86_64
openssh-server-8.7p1-34.el9.x86_64

逆方向——特定パッケージがインストールしたファイルを列挙したい場合は rpm -ql を使います。設定ファイルの置き場所や、どのバイナリが含まれているかを確認するときに便利です。

rpm -ql nginx

監査・棚卸し用にパッケージ一覧をファイルへ書き出す

定期的なセキュリティ監査や、本番と検証サーバーのパッケージ差分確認には、一覧をファイルへ出力しておくと管理が楽になります。

# 日付付きファイルへ書き出す
rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
  | sort > /tmp/pkg-list-$(date +%Y%m%d).txt

# 総パッケージ数を確認
rpm -qa | wc -l

2 台のサーバー間で差分を比較する場合は、それぞれのリストを取得して diff にかけます。

# server-a 上でリストを取得
rpm -qa | sort > /tmp/pkg-server-a.txt

# server-b のリストをローカルへコピー
scp user@server-b:/tmp/pkg-server-b.txt /tmp/

# 差分を確認(左側が server-a のみ、右側が server-b のみ)
diff /tmp/pkg-server-a.txt /tmp/pkg-server-b.txt

ある運用現場では、本番リリース前夜にこの差分チェックをルーティン化することで、検証環境にだけ入っていたデバッグ用パッケージを本番に持ち込むミスをゼロにしたケースがあります。

インストール・削除の変更履歴を確認する

「いつ、何をインストールしたか」の履歴は dnf history で確認できます(RHEL 8 以降 / dnf を使うディストリ限定)。rpm -qa の静的なスナップショットでは見えない「変更の文脈」を把握できます。

# トランザクション履歴を一覧表示
dnf history

# 特定トランザクションの詳細(ID 番号を指定)
dnf history info 42

出力例(dnf history):

ID  | Command line                | Date and time    | Action(s) | Altered
-------------------------------------------------------------------------------
42  | install nginx               | 2026-07-15 10:23 | Install   |       3
41  | update                      | 2026-07-01 03:00 | Update    |      57

問題が発生した日時の前後で dnf history を確認し、不審なパッケージ追加や大量アップデートが原因を絞り込むヒントになることがあります。

注意点: rpm -qa は RPM データベースを直接参照するため、dnf を経由せず手動でインストールした RPM も含まれます。一方 dnf historydnf 経由の操作しか記録しません。両者を組み合わせることで、管理外のパッケージ混入も検出できます。

<PR>この記事に関連するおすすめ書籍

新しいシェルプログラミングの教科書

現場で使えるシェルスクリプトの書き方を基礎から実務レベルまで解説。定型作業の自動化に役立ちます。

「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。

ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。

>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)

※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次