【Linux】rpmコマンドでRPMパッケージを管理する

目次

概要

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)依存パッケージが足りなくても強制的にインストール・削除を行いたい場合に使用します。システム整合性が壊れる可能性があるため、緊急時以外は非推奨です。Bashrpm -ivh --nodeps middleware-lib.rpm
  • GPG鍵のインポート (–import)公式リポジトリ以外のパッケージを扱う際、改ざん防止用の公開鍵を信頼リストに追加します。Bashsudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9

注意点

  1. 依存関係の自動解決は行わないrpm コマンドは、必要なライブラリが不足していても自動でダウンロード・インストールしてくれません。「Failed dependencies」エラーが出た場合は、不足しているパッケージを手動で探して順序よく入れるか、素直に dnf / yum を使用してください。
  2. パッケージ名の指定方法インストール時(-i)やファイル検証時(-p)は「ファイル名(例: pkg.rpm)」を指定しますが、削除(-e)や照会(-q)の際は「パッケージ名(例: pkg)」を指定する必要があります。
  3. sudo権限照会(-q)以外の操作(インストール、削除、更新)にはroot権限が必要です。

応用

パッケージの詳細情報とファイルリストを表示する

インストール済みのパッケージがどのようなソフトウェアなのか(概要、バージョン、作成日)、そしてどのディレクトリにどんなファイルを配置しているかを確認します。

# パッケージの詳細情報(i)を表示
rpm -qi httpd

# パッケージに含まれるファイル一覧(l)を表示
rpm -ql httpd

まとめ

rpm コマンドは、パッケージ管理の基礎となるツールです。

日常的な更新管理には dnf を使うのが一般的ですが、「特定のファイルがどのパッケージか知りたい」「依存関係のエラー詳細を知りたい」「ネットに繋がらないサーバーにUSBメモリ経由でツールを入れたい」といったトラブルシューティングや特殊な環境構築において、このコマンドの操作スキルが必須となります。

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次