RPM は現在 Intel i386、Degital Alpha、Sparc 用にパッケージ を作成するために使う事ができます.SGI と HP のワークステーション上で も同様に動く事が報告されています.全てのプラットフォーム上で簡単に パッケージを作成するための特徴がいくつかあります.まず第一に /etc/rpmrc の中の "optflag" の指示です.それはソフトウェアを作成する 時に使われるフラグをアーキテクチャ特有の値に設定するために使う事がで きます.他の機能として spec ファイル中の "arch" マクロがあります. それは作成するアーキテクチャに依存する異なる作業をするために使う事が できます.他に、ヘッダ中の "Exclude" の指示です.
以下は "fileutils" パッケージの spec ファイルの一部です. Alpha と Intel 向けの両方を作成するための構成です.
Summary: GNU File Utilities
Name: fileutils
Version: 3.16
Release: 1
Copyright: GPL
Group: Utilities/File
Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
Source1: DIR_COLORS
Patch: fileutils-3.16-mktime.patch
%description
These are the GNU file management utilities. It includes programs
to copy, move, list, etc, files.
The ls program in this package now incorporates color ls!
%prep
%setup
%ifarch alpha
%patch -p1
autoconf
%endif
%build
configure --prefix=/usr --exec-prefix=/
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s
%install
rm -f /usr/info/fileutils*
make install
gzip -9nf /usr/info/fileutils*
この例では、どのように /etc/rpmrc 中の "optflags" の指示が使われてい るか分かるでしょう.あなたが作成しているアーキテクチャに依存する適当 な値が RPM_OPT_FLAGS に与えられています.使用している(-m486 や -O2 のような) 通常の指示の代わりにこの変数を用いるには、パッケージの Makefile にパッチを当てなければなりません. このソースパッケージをインストールすることによって必要となることをソー スを解凍して Makefile を調べることが 良いと感じるでしょう. その時、Makefile のためのパッチをしらべ、何を変えねばならないかを見 てください.
%ifarch マクロはとても重要です.多くの場合一つのパッチもしくは特定の アーキテクチャ用の二つのパッチを作る必要があるでしょう.このような場 合、RPM は適したアーキテクチャ用のパッチのみを当てることができます.
上記の例として、fileutils は64ビットマシン向けのパッチを持っています. 明らかに、これは Alpha 上にのみ当てられるべきです. それで、私達は、64ビットパッチのところに %ifarch マクロを付け加えま した.
%ifarch axp
%patch1 -p1
%endif
これは Alpha 以外のアーキテクチャには当てられないパッチであることを 保証します.
全てのプラットホームのために一つのディレクトリでソース RPM パッケー ジをメンテナンスできるようにするために、私達はあるアーキテクチャ上で 作成されることからパッケージを"除外"するための機能を実装しました.こ れは以下のように実行できます.
rpm --rebuild /usr/src/SRPMS/*.rpm
そして正しくパッケージが作成されます.もしあるプラットホーム向けにア
プリケーションを移植していないのならば、あなたがしなければならないこ
と全てはソースパッケージの spec ファイルのヘッダに以下のような一行を
付け加えることです.
ExcludeArch: axp
そのようにしてから、作成するプラットホーム上でパッケージを再作成して
ください.そうすれば、あなたは Intel 上で作成するためのソースパッケー
ジを手にすることになり、Alpha の部分は簡単に飛ばすことができます.
マルチ アーキテクチャ用のパッケージを作成するために RPM を用いること はたいていパッケージを両方のアーキテクチャ上で作成するよりも簡単です. しかしながら、作成するのがとても難しいパッケージを作成すればより簡単 になっていきます.いつものように、RPM パッケージを作成するのにつまっ た時に最もよい助けとなることは似たようなソースパッケージを調べること です.