RPM系パッケージ管理の全体像

Red Hat Enterprise Linux、Fedora、SUSEなど、RPM系のディストリビューションでは、ソフトウェアは.rpm形式のパッケージとして配布・管理されます。Debian系と同様に、パッケージ管理は低レベルと高レベルの2階層に分かれています。

階層役割代表コマンド
低レベル(パッケージファイル自体の操作)個々の.rpmファイルのインストール・削除・情報照会を行うrpm
高レベル(リポジトリと依存関係の管理)リポジトリから、依存関係を自動的に解決しながらパッケージを取得・管理するyum(および後継のdnf)、SUSE系ではzypper

rpm:パッケージファイルを直接操作する

rpmは、ダウンロード済みの.rpmファイルを直接インストール・削除したり、パッケージの情報を照会したりするための低レベルなコマンドです。dpkgと同様、依存関係の自動解決は行いません。

主なオプション効果
-i新規にパッケージをインストールする(同一版が既にインストール済みの場合は通常失敗する)
-Uパッケージをインストール、または既にあれば新しいバージョンにアップグレードする(通常はこちらが推奨される)
-eパッケージを削除する
-h(--hash)インストールやアップグレードの進行状況を#記号で表示する。通常は詳細情報を表示する-vと組み合わせて使用する

複数バージョンの共存が許可されているパッケージでは、異なるバージョンを-iでインストールできる場合があります。

rpm -i package.rpm      # 新規インストール(同一版が既にあると通常は失敗する)
rpm -U package.rpm      # インストールまたはアップグレード(通常はこちらを使う)
rpm -e package_name     # 削除する

rpm -ivh package.rpm    # 詳細情報と進行状況を表示して新規インストール
rpm -Uvh package.rpm    # 詳細情報と進行状況を表示してインストールまたはアップグレード

-ivhや-Uvhのように、複数の短いオプションはまとめて指定できます。-hを指定すると、処理の進行に合わせて次のように#記号が表示されます。

Updating / installing...
package-name-1.0-1  ########################################

クエリモード:rpm -q

-q(クエリ)モードでは、パッケージの情報照会ができます。

オプション効果
-qaインストール済みの全パッケージを一覧表示する
-qi パッケージ名パッケージの詳細情報(バージョン、説明等)を表示する
-qf ファイルパス指定したファイルがどのパッケージによってインストールされたかを調べる
-ql パッケージ名パッケージが配置したファイルの一覧を表示する

-V パッケージ名は、インストール済みのファイルがパッケージ本来の状態(サイズ・パーミッション・所有者等)から変更されていないかを検証します。

rpm -qa | grep httpd     # インストール済みパッケージからhttpdを含むものを探す
rpm -qi httpd            # httpdパッケージの詳細情報を表示する
rpm -qf /etc/httpd/conf/httpd.conf   # このファイルがどのパッケージのものかを調べる
rpm -ql httpd             # httpdパッケージが配置したファイルの一覧を表示する
rpm -V httpd              # httpdパッケージのファイルが改変されていないか検証する

-qf(ファイルからパッケージを逆引き)と-ql(パッケージからファイル一覧を取得)が逆方向の検索である点は、Debian系のdpkg -S・dpkg -Lと同じ関係です。

rpm2cpio:インストールせずに中身を取り出す

rpm2cpioは、.rpmパッケージファイルをcpio形式のアーカイブに変換するコマンドです。パッケージを実際にインストールすることなく、中身のファイルだけを取り出したい場合に、cpioと組み合わせて使います。

rpm2cpio package.rpm | cpio -idmv    # インストールせずに中身を展開する

yum:リポジトリからのインストールと依存関係の解決

yum(Yellowdog Updater, Modified)は、/etc/yum.repos.d/以下に登録されたリポジトリから、依存関係を自動的に解決しながらパッケージを取得・インストールする高レベルなコマンドです。

コマンド効果
yum install パッケージ名パッケージを依存関係も含めてインストールする
yum remove パッケージ名パッケージを削除する(そのパッケージに依存する他のパッケージも合わせて削除される)
yum update引数を指定しない場合、インストール済みの全パッケージを更新する。パッケージ名を指定すると、そのパッケージを更新対象とし、必要に応じて依存関係も解決する
yum list利用可能・インストール済みのパッケージの一覧を表示する
yum search キーワードパッケージ名・概要からキーワードで検索する
yum info パッケージ名パッケージの説明・概要情報を表示する
yum provides ファイルパス(whatprovides)指定した機能・ファイルを提供するパッケージを検索する
yum repolist有効になっているリポジトリの一覧を表示する
yum repolist all有効・無効を含む、登録済みのすべてのリポジトリを表示する
yum install nginx          # nginxとその依存パッケージをインストールする
yum update                 # インストール済みの全パッケージを更新する
yum provides "*/httpd.conf"   # httpd.confを提供するパッケージを検索する

設定ファイル:/etc/yum.conf、/etc/yum.repos.d/

  • /etc/yum.conf:yum全体の動作設定(キャッシュの保持、既定の動作等)を記述するファイルです。
  • /etc/yum.repos.d/:リポジトリごとの設定ファイル(.repo)を格納するディレクトリです。1つのリポジトリにつき1ファイルという構成が一般的です。

dnf:yumの後継

dnf(Dandified YUM)は、より新しいFedora・RHELで採用されている、yumの後継となるパッケージマネージャーです。yum install・yum updateなどのコマンドは、dnf install・dnf updateのようにほぼそのまま置き換えて使えるよう設計されています(多くの環境でyumコマンド自体がdnfへのエイリアス・ラッパーとして提供されています)。

zypper:SUSE系のパッケージ管理

zypperは、openSUSE・SUSE Linux Enterprise系のディストリビューションで使われる、yumやdnfに相当する高レベルなパッケージ管理コマンドです。

zypper install パッケージ名    # パッケージをインストールする
zypper remove パッケージ名     # パッケージを削除する
zypper search キーワード       # パッケージを検索する

コマンド体系はyum・dnfと似ていますが、ディストリビューション(SUSE系)が異なる点に注意してください。