「RPMでインストールしたい その1、2」で紹介したqmail-1.03-109memphis.src.rpmには、qmail-date-localtime.patchなどのパッチが適用されていません。そこで、パッチを適用するために少々手を加える必要があります。
通常はSRPMファイルのインストール後、/usr/src/redhat/SPECS(または/usr/src/turbo/SPECS、/var/src/rpm/SPECSなど)ディレクトリ中のSPECファイルと呼ばれる定義ファイルを書き換えることで修正できます。ただし、qmail-1.03-109memphis.src.rpmはすでにバイナリデータを含んでいます。そこで、そのバイナリデータのSRPMであるvar-qmail-create-1.03-109memphis.src.rpmを用意する必要があります。手順を整理すると次のようになります。
- var-qmail-create-1.03-109memphis.src.rpmのインストール
- パッチファイルを/usr/src/redhat/SOURCESに準備
- /usr/src/redhat/SPECS/var-qmail-create.specファイルを編集
- var-qmail-create.specを使用してrpmbuildを実行し、新しいqmail-1.03-109memphis.src.rpmを作成
- 作成したqmail-1.03-109memphis.src.rpmで「RPMでインストールしたい その1」を実行
では、qmail-date-localtime.patchの適用を例に手順を見ていきましょう。var-qmail-create-1.03-109memphis.src.rpmをインストールしたら、qmail-date-localtime.patchファイルを/usr/src/redhat/SOURCES/ディレクトリに用意します。
# rpm -Uvh http://www.qmail.org/rpms/var-qmail/var-qmail-create-1.03-109memphis.src.rpm
# wget ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch
# mv qmail-date-localtime.patch /usr/src/redhat/SOURCES/ |
注:パスはRed Hat Linuxの場合。 |
ファイルの用意ができたらSPECファイルを編集します。SPECファイルは大まかに次のようなブロックで構成されています。パッチを当てる処理の記述を2カ所追加します。
Packager: mw@moni.msci.memphis.edu (RPMパッケージの作者)
Release: 109memphis (RPMパッケージのリリース番号)
Buildroot: /tmp/%name-root (仮想インストールで利用するディレクトリ)
Copyright: Check with djb@cr.yp.to (RPMパッケージの著作権、ソースの著作権にも注意)
ExclusiveOS: Linux (パッケージを作成できるOS)
Group: Utilities/System (パッケージのカテゴリ)
Name: var-qmail-create (RPMパッケージの名前)
Requires: rpm >= 3 (依存性のあるパッケージとそのバージョン)
Source0: ftp://cr.yp.to/software/qmail-%version.tar.gz (RPMパッケージ作成のためのソース名。SOURCESのディレクトリに置いておく必要がある)
Source: ftp://ftp.hogehoge.org/hoge-1.1.tar.gz (ソースの入手先を明記)
Source1: %name-%vsrcname.spec
Source2: %name-add-account
Source3: %name-add-group
Source4: %name-Makefile
Source5: %name-README_rpm
Source6: %name.mem_replace.sh
Patch0: qmail-date-localtime.patch ←追加(パッチファイル。SOURCESに置いておく)
Summary: Creates binary package for qmail (パッケージの説明)
URL: http://www.qmail.org/ (詳しい情報が得られるURL)
Version: 1.03 (ソースのバージョン名)
%description (パッケージの説明)
%prep (umask 022に設定し、$RPM_BUILD_DIRへcdしてソースツリーが存在していたらrm -rfを実行)
%setup -q -n qmail-%version (ソースファイルの展開)
%patch0 -p1 ←追加(パッチの適用)
%build (make、configureを記述し、実際のビルド作業を指定する)
%install (make installなど実際のインストール作業を指定する)
%clean (ビルドで利用したディレクトリツリーを消去)
%post (パッケージをインストールした後にすることを指定)
%files (インストールするファイルを記載) |
参考:
・http://www.karaba.org/~mk/rpm/rpm-ref.html
・http://www.linux.or.jp/JF/JFdocs/RPM-BUILD-HOWTO.html |
SPECファイルにはさまざまなタグがあり、インストールをきめ細かく制御できますが、ここではパッチを適用するだけにとどめます。パッチを複数当てる必要がある場合は、前半の記述と後半の記述を同じように増やします。
Patch1:SOURCESディレクトリに置いたパッチファイル名
Patch2: ... |
前半 |
%patch1 -p1 (-pXはpatch
-pXと同じように指定)
%patch2 -p1 |
後半 |
SPECファイルの変更が完了したら、rpmbuild(注)を実行します。その後、var-qmail-create-1.03-109memphis.i386.rpmをあらためてインストールします。
注:rpm バージョン3以前の場合はrpmコマンドを使用します。
# vi /usr/src/redhat/SPECS/var-qmail-create.spec
# rpmbuild -ba /usr/src/redhat/SPECS/var-qmail-create.spec
# rpm -Uvh ../RPMS/i386/var-qmail-create-1.03-109memphis.i386.rpm |
注:パスなどはRed Hat Linuxの場合。 |
この後は、「RPMでインストールしたい その1」の手順に戻ります。
次回は最終回です。Linux Square会議室でも話題となったrelay-ctrl-3.1.1の設定方法やSMTP認証、qmailをより便利にするTipsなどを紹介します。