最終更新日 2005/04/01
RPMパッケージ管理
RPMとは
RPMパッケージの種類
RPMコマンド(インストール関連)
RPMコマンド(検索関連)
SRPMファイル(ソース)
SRPM→RPM作成RPMとは
RPMとは、RedHat系のディストリビューションで採用しているパッケージ管理システムです。RPMは「RPM Package Manager」の略で再帰的頭字語になってます。ちなみに最初は「Redhat Package Manager」の略でした。
長所は、バイナリ形式のものであればコマンド一つで一発インストールできることです。インストールの時間もほとんどかかりません
欠点は、パッケージ間で依存しているものがあり、依存しているパッケージを複数インストールしなければなりません。
例えば、AAAというパッケージをインストールした場合に、「BBBが必要です」というエラーメッセージができます。
その時は、先にBBBというパッケージをインストールし、その後にAAAをインストールする必要があります。
この場合は、「AAAはBBBに依存している」と言います。いわゆる依存関係問題です。依存関係問題は、最近すこしずつ解決されてきています。
Fedora Coreが採用している「yum」や、Debian/GNU Linuxが採用している「apt」などは依存関係を調べ、ダウンロードからインストールまで一括して やってくれる便利なコマンドもあります。
RPMパッケージの種類
RPMパッケージで配布されているソフトウェアは、名前の最後が「.rpm」となっています。またRPMパッケージには、バイナリパッケージとソースパッケージの2種類が存在します。
バイナリパッケージ
バイナリパッケージはその名の通り、コンパイル済みのバイナリファイルとして配布されています。バイナリファイルですので、そのままインストールしてすぐに利用できます。
「lynx-2.8.5-18.i386.rpm」「yum-2.1.11-3.noarch.rpm」などの名前は、バイナリパッケージです。
ファイル名の形式は「[パッケージ名]-[バージョン番号]-[リリース番号].[アーキテクチャ].rpm」となります。
[アーキテクチャ]の部分は、CPUの種類になります。インテルX86互換CPUの場合は、「i386」「i586」が入ります。
また、アーキテクチに依存しない場合は、「noarch」という表記になります。
ソースパッケージ
ソースパッケージは、バイナリファイルのRPMを作成するためのファイルになります。ソースパッケージの中には、スペックファイル、ソースファイル、パッチファイルなどが含まれています。
スペックファイルは、RPMバイナリファイルを作成するための「マニュアル」になります。 RPMバイナリパッケージでインストールしようとした場合に、ライブラリなどの関係で失敗する場合は、RPMソースから バイナリパッケージを作成したりします。
「lynx-2.8.5-18.src.rpm?」「yum-2.1.11-3.src.rpm」などの名前は、RPMソースパッケージです
ファイル名の形式は「[パッケージ名]-[バージョン番号]-[リリース番号].src.rpm」となります
ソースパッケージは、[アーキテクチャ]の部分がsrcとなります。
RPMコマンド(インストール関連)
RPMバイナリパッケージは、「RPM」コマンドを使ってインストール・アップグレード・削除等を行います。インストール時に共通して指定している「vh」は詳細な情報の表示「h」と進捗表示「v」です
インストール関連コマンド
| コマンド | 動作 |
| # rpm -ivh <パッケージファイル名> | 新規インストール |
| # rpm -Uvh <パッケージファイル名> | アップグレード(インストールされていなければ新規インストール) |
| # rpm -Fvh <パッケージファイル名> | アップグレード(インストールされていなければ何もしない) |
| # rpm -ivh --nodeps <パッケージファイル名> | 依存関係を無視してインストール |
| # rpm -ivh --force <パッケージファイル名> | 既存のファイルを新しいものに置き換える |
| # rpm -ivh --test <パッケージファイル名> | テストを行う(実際にインストールはしない) |
| # rpm -ivh --oldpackage <パッケージ名> | 古いパッケージをインストールする |
| # rpm -ivh --replacepkgs <パッケージ名> | インストール済みのパッケージを置き換える |
| # rpm -e --replacefiles <パッケージ名> | インストール済みのほかのパッケージのファイルを置き換える |
| # rpm -e <パッケージ名> | パッケージをアンインストール |
| # rpm -e --nodeps <パッケージ名> | 依存関係を無視してアンインストール |
RPMコマンド(検索関連)
RPMでインストールした情報などを「/usr/lib/rpm」ディレクトリ内に保存しています。このデータベースを「RPMデータベース」を言います。検索コマンドなどは、このデータベースから情報を収集しています。
パッケージの検索は、「-q」オプションを利用します。
一般的に検索コマンドは、パッケージがインストールされているか調べることが多いので、「rpm -qa」コマンドで すべてのパッケージを表示し、パイプを通して「grep」で検索します。
検索関連コマンド
| コマンド | 動作 |
| # rpm -q <パッケージ名> | パッケージが入っていれば表示 |
| # rpm -qa | インストールされているすべてのパッケージを表示 |
| # rpm -qi <パッケージ名> | パッケージの情報を表示 |
| # rpm -ql <パッケージ名> | パッケージがインストールされている場所を表示 |
| # rpm -qip <パッケージファイル名> | パッケージファイルから情報を表示 |
| # rpm -qlp <パッケージファイル名> | パッケージファイルからインストールされる場所を表示 |
RPMコマンド(ソース)
RPMのソースパッケージから、RPMのバイナリパッケージを作成することができます。RPMのソースパッケージを利用する時は、ソースパッケージから直接バイナリパッケージを作成する方法と、ソースファイルとビルドしてから インストールする方法と2つあります。
どちらの方法でも使用するコマンドは、「rpmbulid」コマンドです。
rpmbulidコマンドは、「/usr/src/redhat」以下のディレクトリを利用するようになっています。
rpmbulidコマンドが利用するディレクトリ
| ディレクトリ | 説明 |
| /usr/src/redhat/BUILD | ソースが展開されビルドが行われる |
| /usr/src/redhat/RPMS | 完成したバイナリパッケージが配置される |
| /usr/src/redhat/SOURCES | SRPMに含まれるソースファイル・パッチなどが配置される |
| /usr/src/redhat/SPECS | RPMファイルを作成する手順が書かれているスペックファイルが配置される |
| /usr/src/redhat/SRPMS | 完成したソースパッケージが配置される |
SRPM→RPM作成
ソースパッケージからRPMファイルの作成
ソースパッケージからバイナリパッケージを作成する時は、「rpmbuild --rebuild <ソースパッケージ>」で行います。成功すると、「/usr/src/redhat/RPMS/<アーキテクチャ>」にバイナリファイルが作成されます。
# rpmbuild --rebuild ncftp-3.1.8-2.src.rpm ncftp-3.1.8-2.src.rpm をインストール中 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.47223 Patch #1 (ncftp-3.0.1-pref.patch): Patch #2 (ncftp-3.1.7-shell.patch): Patch #3 (ncftp-3181-v6-20040826.diff.gz): Patch #4 (ncftp-3.0.3-resume.patch): Patch #5 (ncftp-3.1.5-pmeter.patch): Patch #6 (ncftp-3.1.5-ncursesw.patch): Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.9521 `/usr/lib/rpm/redhat/config.sub' -> `./sh/config.sub' `/usr/lib/rpm/redhat/config.guess' -> `./sh/config.guess' creating cache ./config.cache 〜中略〜 + umask 022 + cd /usr/src/redhat/BUILD + cd ncftp-3.1.8 + rm -rf /var/tmp/ncftp-root + exit 0 Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.39181 + umask 022 + cd /usr/src/redhat/BUILD + rm -rf ncftp-3.1.8 + exit 0 |
Top