RPMパッケージ管理の基本と実践

RPM(Red Hat Package Manager)は、GPLライセンスに基づき配布され、多くのLinuxディストリビューションで利用されているパッケージ管理システムです。

主な機能

  • ソフトウェアパッケージのインストール、アンインストール、アップグレード、更新、および管理が可能
  • 特定のRPMパッケージに含まれるファイル一覧を確認できる
  • システム上の任意のファイルがどのRPMパッケージに属しているかを特定可能
  • インストール済みパッケージの存在やバージョン情報を照会可能
  • 開発者は独自のソフトウェアをRPM形式でパッケージ化し、公開可能
  • GPG署名およびMD5チェックサムによるパッケージの検証・署名対応
  • 依存関係のチェックを行い、システムの整合性を維持

基本操作とコマンドオプション

RPMの基本構文:rpm [オプション] [パッケージファイル]

オプション 説明
-iパッケージをインストール
-v詳細な出力を表示
-hインストール中にハッシュ記号(#)で進捗を表示
--replacepkgs既にインストール済みでも再インストール
--test実際にはインストールせずテストのみ実行
--nodeps依存関係を無視
--forceファイルやパッケージの競合を無視
--percent進捗をパーセンテージで表示
--excludedocsドキュメントファイルをインストールしない
--ignorearchアーキテクチャの互換性を無視
--ignoresizeディスク容量をチェックしない
--justdbRPMデータベースのみ更新し、ファイルシステムは変更しない
--nofiledigestファイルのダイジェスト(チェックサム)を検証しない
--noscriptsインストール時のスクリプトを実行しない
--replacefilesファイルの競合を無視して上書き
-eパッケージを削除
-Uパッケージをアップグレード(未インストール時もインストール)
-Fパッケージを更新(既にインストール済みの場合のみ)
--oldpackage新しいバージョンより古いバージョンへダウングレード
-qパッケージ情報を照会
--initdbRPMデータベースを初期化
--rebuilddbインストール済みパッケージ情報からデータベースを再構築

インストール例:依存関係を無視して強制インストール

[root@localhost Packages]# rpm -ivh --nodeps bind-9.9.4-72.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:bind-32:9.9.4-72.el7             ################################# [100%]
/var/tmp/rpm-tmp.qmIlvV: line 10: semanage: command not found
/var/tmp/rpm-tmp.qmIlvV: line 29: semanage: command not found
/var/tmp/rpm-tmp.qmIlvV: line 34: /usr/sbin/semanage: No such file or directory
warning: %posttrans(bind-32:9.9.4-72.el7.x86_64) scriptlet failed, exit status 127

アンインストール

基本構文:rpm -e [パッケージ名]

[root@localhost Packages]# rpm -e --nodeps bind

アップグレードと更新

  • アップグレード(-U:既存のバージョンに関係なく常にインストールまたは置き換え
  • 更新(-F:既にインストール済みのパッケージのみを新しいバージョンに置き換え。未インストールの場合は何もしない

照会操作

  • 特定パッケージのインストール確認:rpm -q httpd
  • 全インストールパッケージ一覧:rpm -qa
  • パッケージの詳細情報:rpm -qi httpd
  • パッケージに含まれるファイル一覧:rpm -ql httpd
  • 依存関係の確認:rpm -qR httpd
  • ファイルが属するパッケージの特定:rpm -qf /etc/crontab

例:

[root@localhost ~]# rpm -qf /etc/crontab
crontabs-1.11-6.20121102git.el7.noarch

※ファイルを指定する際は、絶対パスを用いる必要があります。

タグ: RPM Red Hat package management linux system administration

6月13日 18:53 投稿