SRPMを使ったパッケージのインストール

概要

多くのRPMパッケージにはバイナリパッケージとソースパッケージが用意されています。ソースパッケージはSRPMとも呼ばれ、.src.rpmという拡張子が付けられています。

バイナリパッケージはあらかじめビルドされたパッケージであり、簡単にインストールできる反面、ライブラリのバージョンが違ったり依存関係に問題があると、正常に動作しないことがあります。その場合はソースパッケージから自分の環境に合うバイナリパッケージをリビルドして、インストールすることになります。

ここではsysstatを例に、SRPMを使ってパッケージをインストールする方法を説明します。



構成

CentOS release 5.7 (Final)
RPM バージョン 4.4.2.3



rpmbuildのインストール

SRPMからバイナリパッケージを作成するには、rpmbuildというコマンドが必要になります。まだインストールされていなければ、ここでインストールしてしまいましょう。なお、パッケージ名はrpm-buildです。

# yum install rpm-build.x86_64



SRPMのインストール

ディストリビューションにもよりますが、RedHat系のOSでは/usr/src/redhatディレクトリや/var/src/rpmディレクトリにRPMをビルドするためのディレクトリが用意されています。

# ls /usr/src/redhat/
BUILD  RPMS  SOURCES  SPECS  SRPMS

/usr/src/redhat/SRPMSディレクトリにSRPMをダウンロードします。

# wget -P /usr/src/redhat/SRPMS http://pagesperso-orange.fr/sebastien.godard/sysstat-10.0.3-1.src.rpm


方法1 SRPMから直接RPMをリビルドする

SRPMから直接RPMをリビルドします。あえてSPECファイルを編集する必要がなく、自分の環境でリビルドしたいだけであれば、こちらの方法でインストールできます。

rpmbuildコマンドを使って、SRPMからRPMをリビルドします。

# rpmbuild --rebuild /usr/src/redhat/SRPMS/sysstat-10.0.3-1.src.rpm

リビルドすると次のようなエラーメッセージが表示されることがあります。この場合、MD5チェックサムの検証をスキップする必要があるため、方法2でインストールします。

# rpmbuild --rebuild sysstat-10.0.3-1.src.rpm
sysstat-10.0.3-1.src.rpm をインストール中です。
エラー: アーカイブの伸長に失敗: ファイル /usr/src/redhat/SPECS/sysstat-10.0.3.spec;4f069b14: cpio: MD5 チェックサムが適合しません。
エラー: sysstat-10.0.3-1.src.rpm をインストールできません。

リビルドされたRPMをインストールします。

# rpm -ivh /usr/src/redhat/RPMS/x86_64/sysstat-10.0.3-1.x86_64.rpm


方法2 SRPMを展開し、SPECファイルを修正してからリビルドする

SRPMをインストールします。SOURCESディレクトリにソースコードが、SPECSディレクトリにSPECファイルが展開され、自分の環境に合わせてSPECファイルを編集できます。

# rpm -ivh /usr/src/redhat/SRPMS/sysstat-10.0.3-1.src.rpm

cpio: MD5 チェックサムが適合しません。というエラーメッセージが表示された場合は、--nomd5オプションを付けてMD5チェックサムの検証をスキップします。

# rpm -ivh --nomd5 /usr/src/redhat/SRPMS/sysstat-10.0.3-1.src.rpm

SPECファイルを修正します。

# vim /usr/src/redhat/SPECS/sysstat-10.0.3.spec

rpmbuildコマンドを使って、RPMをリビルドします。--bbオプションはバイナリパッケージのみをビルドする(ソースパッケージはビルドしない)、--cleanオプションは最後にビルドツリーを削除することを意味しています。

# rpmbuild -bb --clean /usr/src/redhat/SPECS/sysstat-10.0.3.spec

リビルド中は多くのメッセージが表示されますが、最後の方で次のようなメッセージが出力されます。これを見るとRPMの作成先を確認できます。

書き込み完了: /usr/src/redhat/RPMS/x86_64/sysstat-10.0.3-1.x86_64.rpm

リビルドされたRPMをインストールします。

# rpm -ivh /usr/src/redhat/RPMS/x86_64/sysstat-10.0.3-1.x86_64.rpm