次のページ 前のページ 目次へ

14. 付録 B - 独自の RPM パッケージの作り方

RPM パッケージのフォーマットは既に非常に詳しく文書化されています.特に Ed Bailey 氏の「Maximum RPM」という書籍が詳しいです.これは RPM WWW site からダウンロードす ることができますし,書店で購入することもできます! 以下は急いでいる人が 簡単に利用できるようにするためのヒントです.

RPM パッケージは spec ファイルから作られます.このファイル (KickStart の設定ファイルに似た形式)は,パッケージを構築するために必要 な手順のレシピから構成されています.もしかすると複数プラットフォームに 対応することあるかもしれないので,パッケージはソースから構築することが 期待されています.また,コンパイルの前にはパッチを適用する必要があるか もしれません.一度構築とインストールを行うと,パッケージに関連するもの として指定したファイルとディレクトリからバイナリの RPM ファイルが生成 されます.覚えておくべき重要な点としては,RPM は指定されたパッケージに 関連するファイルとディレクトリについて何も知らないので,これを指定する 必要があります.

Squid WWW キャッシュサーバ の独自 RPM 用のサンプル spec ファイルの例を以下に示します:

Summary: Squid Web Cache server
Name: squid
Version: 1.NOVM.22
Release: 1
Copyright: GPL/Harvest
Group: Networking/Daemons
Source: squid-1.NOVM.22-src.tar.gz
Patch: retry-1.NOVM.20.patch
%description
This is just a first attempt to package up the Squid Web Cache for easy
installation on our RedHat Linux servers

%prep
%setup
%build
configure --prefix=/usr/squid
perl -spi -e 's!#( -DALLOW_HOSTNAME_UNDERSCORES)!$1!' src/Makefile
make

%install
make install

%files
/usr/squid

この RPM の構築方法を示します:

% mkdir -p SOURCES BUILD SRPMS RPMS/i386
% cp ~/squid-1.NOVM.22-src.tar.gz SOURCES
% cp ~/retry-1.NOVM.20.patch SOURCES
% rpm -ba squid-1.NOVM.22+retry-1.spec

rpm コマンドは BUILD ディレクトリの下にサブディレクトリを自動 的に生成します.そして rpm コマンドは,このサブディレクトリにソースコー ドを展開し,パッチを適用します(パッチの当て方に関するオプションはたく さんあります.詳しくは先に挙げた書籍で調べてください).ここで rpm は configuremake を実行して自動的にパッケー ジを構築し,make install を使ってこれをインストールします.そ して /usr/squid の下にあるファイルのスナップショットを取りま す.Squid のバイナリ RPM となるのは,このスナップショットです.

展開,構築,インストールの処理には任意のシェルコマンドを入れることがで きる点に注意してください.例えば,Squid のコンパイル時のパラメータを少 し変えるために perl を呼び出すことができます.

最終的なバイナリ RPM パッケージが RPMS ディレクトリにあるプラッ トフォーム固有のサブディレクトリ i386 に残ります.今回の例で はパッケージは squid-1.NOVM.22-1.i386.rpm という名前になりま す.ファイル名は spec ファイルのパラメータを繋げて作る点に注意してくだ さい.すなわち Name, Version, Release, 該当 するハードウェアプラットフォーム(今回の例では i386)です.独自 の RPM を作る際には,長すぎて使いものにならない名前を付けてしまわない ように,この点を忘れないようにしましょう.

RPM パッケージを構築する際にはパッケージ全体を再構築する必要はないこと も知っておいて損はないでしょう.操作例を以下に示します:

Summary: Linux 2.0.36 kernel + filehandle patch + serial console patch
Name: linux
Version: 2.0.36+filehandle+serial_console
Release: 1
Copyright: GPL
Group: Base/Kernel
Source: linux-2.0.36+filehandle+serial_console.tar.gz
%description
This is just a first attempt to package up the Linux kernel with patches
for installation on our RedHat Linux servers

%prep
echo

%setup
echo

%build
echo

%install
echo

%post
/sbin/lilo

%files
/lib/modules/2.0.36
/boot/vmlinuz

この例は単に,/boot/vmlinuz ファイルと /lib/modules/2.0.36 ディレクトリの内容に基づいて RPM パッケー ジを作成し,対象のマシンにパッケージのインストールを行った後に /sbin/lilo を実行するだけです.これよりもうまい spec ファイル の書き方があれば筆者にお知らせください.


次のページ 前のページ 目次へ