概要
Red Hat系ディストリビューション(RHEL, CentOS, AlmaLinux, Rocky Linuxなど)において、パッケージのインストール、アンインストール、アップデート、情報の照会を行うための低レベルなコマンドです。
現在、パッケージ管理の主流は依存関係を自動解決してくれる dnf (または yum) ですが、インターネットに接続されていない環境で個別の .rpm ファイルをインストールしたり、インストール済みパッケージの詳細な情報を調査したりする際に、この rpm コマンドが不可欠となります。
仕様(引数・オプション)
構文
rpm [モード] [オプション] [パッケージ名またはファイル名]
主なモード・オプション
| モード/オプション | 説明 |
| -i (Install) | パッケージを新規インストールします。 |
| -U (Upgrade) | パッケージをアップグレードします(未インストールの場合はインストールします)。 |
| -F (Freshen) | 既にインストールされているパッケージのみをアップグレードします。 |
| -e (Erase) | パッケージをアンインストール(削除)します。 |
| -q (Query) | パッケージ情報を照会(検索)します。 |
| -V (Verify) | インストール済みファイルの状態を検証・チェックします。 |
| -v (Verbose) | 詳細な情報を表示します。 |
| -h (Hash) | 進行状況をハッシュ記号(#)のバーで表示します。 |
| –test | 実際には実行せず、動作確認(ドライラン)のみを行います。 |
| –import | パッケージの署名検証に使うGPG公開鍵をインポートします。 |
基本の使い方
ローカルにある .rpm ファイル(ここでは custom-tool-1.0.0.x86_64.rpm)をシステムにインストールします。
通常は -ivh(インストール・詳細表示・進行バー)の組み合わせで使用します。
# パッケージのインストール
sudo rpm -ivh custom-tool-1.0.0.x86_64.rpm
実行結果例
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:custom-tool-1.0.0-1.el9 ################################# [100%]
実践コマンド
実際に変更せずインストールの可否をテストする
依存関係の不足や競合がないかを事前に確認するために --test オプションを使用します。エラーが出なければインストール可能です。
# インストールテスト(システムへの変更は行われません)
rpm -ivh --test new-editor-2.5.rpm
ディレクトリ内のパッケージで既存のものだけ更新する
「既にインストールされているソフト」だけを、手元の新しい .rpm ファイルを使って一括更新する場合、-F (Freshen) を使用します。新規ソフトはインストールされません。
# updatesディレクトリ内のrpmを使って、インストール済みのものだけ更新
sudo rpm -Fvh /mnt/media/updates/*.rpm
インストール済みパッケージから検索する
システムに入っている全パッケージ一覧を取得し、特定の名前(例: python)を含むものを探します。
# 全パッケージ(-a)から名前検索
rpm -qa | grep python
ファイルがどのパッケージに属しているか調べる
システム上の特定のコマンドやファイルが、どのRPMパッケージによってインストールされたものかを特定します。
# /usr/bin/vim がどのパッケージのものか確認
rpm -qf /usr/bin/vim
実行結果例
vim-enhanced-8.2.2637-20.el9.x86_64
パッケージの改変を検証する
手元の .rpm パッケージファイルと、実際にシステムにインストールされているファイルの状態を比較し、変更(改ざんや破損)がないか検証します。何も出力されなければ正常です。
# MD5チェックサムやファイルサイズなどを検証
rpm -Vp custom-tool-1.0.0.x86_64.rpm
パッケージをアンインストールする
パッケージ名を指定して削除します。拡張子(.rpm)は不要です。
# パッケージの削除
sudo rpm -e custom-tool
カスタムポイント
- 依存関係の無視 (–nodeps)依存パッケージが足りなくても強制的にインストール・削除を行いたい場合に使用します。システム整合性が壊れる可能性があるため、緊急時以外は非推奨です。Bash
rpm -ivh --nodeps middleware-lib.rpm - GPG鍵のインポート (–import)公式リポジトリ以外のパッケージを扱う際、改ざん防止用の公開鍵を信頼リストに追加します。Bash
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
注意点
- 依存関係の自動解決は行わないrpm コマンドは、必要なライブラリが不足していても自動でダウンロード・インストールしてくれません。「Failed dependencies」エラーが出た場合は、不足しているパッケージを手動で探して順序よく入れるか、素直に dnf / yum を使用してください。
- パッケージ名の指定方法インストール時(-i)やファイル検証時(-p)は「ファイル名(例: pkg.rpm)」を指定しますが、削除(-e)や照会(-q)の際は「パッケージ名(例: pkg)」を指定する必要があります。
- sudo権限照会(-q)以外の操作(インストール、削除、更新)にはroot権限が必要です。
応用
パッケージの詳細情報とファイルリストを表示する
インストール済みのパッケージがどのようなソフトウェアなのか(概要、バージョン、作成日)、そしてどのディレクトリにどんなファイルを配置しているかを確認します。
# パッケージの詳細情報(i)を表示
rpm -qi httpd
# パッケージに含まれるファイル一覧(l)を表示
rpm -ql httpd
まとめ
rpm コマンドは、パッケージ管理の基礎となるツールです。
日常的な更新管理には dnf を使うのが一般的ですが、「特定のファイルがどのパッケージか知りたい」「依存関係のエラー詳細を知りたい」「ネットに繋がらないサーバーにUSBメモリ経由でツールを入れたい」といったトラブルシューティングや特殊な環境構築において、このコマンドの操作スキルが必須となります。
