「このサーバーにApacheは入ってる?バージョンは?」
「このファイルどのパッケージのもの?」など
サーバー管理や障害対応の現場では、こうした確認が日常的に発生します。
この記事では
rpmコマンドを使ったパッケージ確認の全手順を、コマンド例とともに体系的に解説します。一覧表示から絞り込み、バージョン確認、ファイル逆引きまで、今日から使える内容です。そもそもなぜ「rpm」コマンドで確認するのか
RHEL・AlmaLinux・Rocky Linux・Oracle Linuxなど、Red Hat系Linuxのパッケージ管理には RPM(Redhat Package Manager) が使われています。普段のインストールや削除には依存関係を自動解決してくれる
dnf(旧yum)コマンドを使うのが一般的です。しかし、「今システムに何が入っているかを確認する」用途ではrpmコマンドが今でも現場で重宝されます。rpmコマンドが活躍する具体的なシーン
・障害対応で「このパッケージのバージョンは?」と素早く確認したいとき・セキュリティパッチの適用前後に、バージョンが正しく変わったか確認するとき
・新サーバーのセットアップ後に、必要なパッケージがすべて入っているかチェックするとき
・「このコマンドはどのパッケージに含まれているの?」と逆引きしたいとき
dnfとrpmの使い分け早見表
| 用途 | 推奨コマンド |
|---|---|
| パッケージのインストール・削除・更新 | dnf |
| インストール済みか確認・一覧表示 | rpm -qa |
| バージョンを確認する | rpm -q |
| 詳細情報(説明・インストール日時)を見る | rpm -qi |
| ファイルがどのパッケージか逆引きする | rpm -qf |
| 最近インストールしたパッケージを確認する | rpm -qa --last |
【基本】インストール済みの全RPMパッケージを一覧表示する
コマンド:rpm -qa$ rpm -qa cryptsetup-libs-2.3.3-4.el9.x86_64 shadow-utils-4.8.1-16.el9.x86_64 elfutils-default-yama-scope-0.185-1.el9.noarch ・・・中略・・・ krb5-libs-1.19.1-18.el9.x86_64 bzip2-libs-1.0.8-8.el9.x86_64
オプションの意味:
| オプション | 意味 |
|---|---|
-q |
query(問い合わせ)=パッケージ情報を検索する |
-a |
all=インストール済みの全パッケージを対象にする |
-qと-aを組み合わせた-qaが「インストール済みパッケージをすべて表示」の定番コマンドです。ただし、数百から数千件が一気に流れてしまうため、次の方法と組み合わせて使うのが実践的です。【応用1】一画面ずつスクロールして確認する(lessコマンド)
出力が多すぎて確認できない場合は、パイプ(|) と less コマンドを組み合わせます。パイプとは、左のコマンドの出力を右のコマンドに渡す機能のことです。
$ rpm -qa | less cryptsetup-libs-2.3.3-4.el9.x86_64 shadow-utils-4.8.1-16.el9.x86_64 ・・・中略・・・
lessコマンドの操作方法:
| キー | 動作 |
|---|---|
↓ / スペース |
下にスクロール |
↑ / b |
上にスクロール |
/キーワード |
前方検索 |
q |
終了 |
moreコマンドでも同様に動作しますが、上方向にスクロールできるlessの使用が現代では推奨されています。【応用2】特定パッケージを絞り込む(grepコマンド)
「httpd(Apache)が入っているか確認したい」など、特定のパッケージだけ調べたい場合はgrepコマンド を組み合わせます。これが現場で最もよく使う方法です。$ rpm -qa | grep http httpd-tools-2.4.51-7.el9.x86_64 httpd-core-2.4.51-7.el9.x86_64
grepの注意点:大文字・小文字は区別されます。大文字・小文字を区別せずに検索したい場合は
-i オプションを付けます。$ rpm -qa | grep -i HTTP httpd-tools-2.4.51-7.el9.x86_64 httpd-core-2.4.51-7.el9.x86_64
【応用3】ワイルドカードで絞り込む(grepなし)
grepを使わず、rpmコマンド単体でも絞り込みができます。その場合は ワイルドカード(*) を使いますが、シェルによって*が誤って展開されることがあるため、シングルクォート(' ')で囲むのが安全です。$ rpm -qa http # 完全一致 → 該当なし (何も表示されない) $ rpm -qa 'http*' # 前方一致(httpから始まるもの) httpd-tools-2.4.51-7.el9.x86_64 $ rpm -qa '*http*' # 部分一致(httpを含むものすべて) httpd-tools-2.4.51-7.el9.x86_64 httpd-core-2.4.51-7.el9.x86_64
rpm -qa | grep キーワード が確実でおすすめです。【応用4】バージョンを確認する(rpm -q / rpm -qi)
「パッケージが入っているかどうか」だけでなく、バージョンまで確認したい場面は現場では非常に多いです。セキュリティパッチの適用確認などに必須のコマンドです。バージョンのみ確認する
$ rpm -q httpd httpd-2.4.51-7.el9.x86_64
package nginx is not installed のように表示されます。詳細情報を確認する(インストール日時・説明文など)
$ rpm -qi httpd Name : httpd Version : 2.4.51 Release : 7.el9 Architecture: x86_64 Install Date: 2024年 1月15日 月曜日 10:23:45 JST Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
-qi(query + info)でパッケージ名・バージョン・インストール日時・説明文まで一括確認できます。【応用5】ファイルからパッケージを逆引きする(rpm -qf)
「このコマンドやファイルは、どのパッケージに含まれているの?」という逆引きは、現場エンジニアがよく直面する場面です。# /usr/bin/curl がどのパッケージに含まれるか調べる $ rpm -qf /usr/bin/curl curl-7.76.1-14.el9.x86_64 # /etc/httpd/conf/httpd.conf がどのパッケージのものか調べる $ rpm -qf /etc/httpd/conf/httpd.conf httpd-2.4.51-7.el9.x86_64
-qf(query + file)にフルパスでファイルを指定するのがポイントです。which コマンド名でフルパスを確認してから実行するとスムーズです。【応用6】最近インストールしたパッケージを確認する(--last)
「最近何がインストールされたか確認したい」・・・セキュリティ監査や障害調査でよく使うコマンドです。# インストール日時が新しい順に表示 $ rpm -qa --last | head -20 httpd-2.4.51-7.el9.x86_64 2024年 1月15日 月曜日 10:23:45 JST httpd-core-2.4.51-7.el9.x86_64 2024年 1月15日 月曜日 10:23:44 JST curl-7.76.1-14.el9.x86_64 2024年 1月10日 水曜日 09:15:30 JST ・・・以下略・・・
head -20 を付けることで、直近20件のみ表示できます。数を変えて件数を調整してください。よくあるエラーと対処法
パッケージが見つからない(package is not installed)
これはエラーではなく「インストールされていない」という正常な応答です。インストールする場合はdnf install パッケージ名 を実行してください。ワイルドカードが効かない・誤動作する
# NG:クォートなしだとシェルが*を展開してしまう場合がある $ rpm -qa *http* # OK:シングルクォートで囲む $ rpm -qa '*http*'
bash: rpm: command not found が表示される
rpmコマンド自体がインストールされていない状態です(Debian/Ubuntu系では使用不可)。Red Hat系OSであればdnf install rpm で再インストールできます。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 全パッケージを一覧表示 | rpm -qa |
| 1画面ずつ確認 | rpm -qa | less |
| キーワードで絞り込む | rpm -qa | grep キーワード |
| バージョンを確認する | rpm -q パッケージ名 |
| 詳細情報を見る | rpm -qi パッケージ名 |
| ファイルから逆引きする | rpm -qf /フルパス/ファイル名 |
| 最近インストールしたものを確認 | rpm -qa --last | head -20 |
rpmコマンドは、サーバーの状態把握・障害対応・セキュリティ確認など、現場のあらゆる場面で役立ちます。まずは rpm -qa | grep と rpm -q パッケージ名 の2つを日常的に使えるよう身につけておきましょう。RPMやパッケージ管理、何となくで操作していませんか?
「コマンドをコピペして動かしているだけ」「依存関係のエラーが出るとお手上げ」という状態から抜け出したい方へ、初心者でもサーバー構築の全体像が掴める『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
独学でLinuxの壁にぶつかって挫折する前に、現場の構築作業のヒントとしてぜひ手元に置いてご活用ください。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・64bit環境に32bitのRPMをyumでインストールするには
・yumに関するログ(ログファイル)を把握する
・yumでダウンロードしたrpmを残す
・RPMパッケージの更新情報を表示する
・RPMパッケージデータベースを新たに作成する
