概要
多くのRPMパッケージにはバイナリパッケージとソースパッケージが用意されています。ソースパッケージはSRPMとも呼ばれ、.src.rpm
という拡張子が付けられています。
バイナリパッケージはあらかじめビルドされたパッケージであり、簡単にインストールできる反面、ライブラリのバージョンが違ったり依存関係に問題があると、正常に動作しないことがあります。その場合はソースパッケージから自分の環境に合うバイナリパッケージをリビルドして、インストールすることになります。
ここではsysstatを例に、SRPMを使ってパッケージをインストールする方法を説明します。
rpmbuildのインストール
SRPMからバイナリパッケージを作成するには、rpmbuildというコマンドが必要になります。まだインストールされていなければ、ここでインストールしてしまいましょう。なお、パッケージ名はrpm-buildです。
# yum install rpm-build.x86_64
ディストリビューションにもよりますが、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