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

7. マルチ アーキテクチャ用 RPM パッケージの作成

RPM は現在 Intel i386、Degital Alpha、Sparc 用にパッケージ を作成するために使う事ができます。SGI と HP のワークステーション上で も同様に動く事が報告されています。全てのプラットフォーム上で簡単に パッケージを作成するための特徴がいくつかあります。まず第一に /etc/rpmrc の中の "optflag" の指示です。それはソフトウェアを作成する 時に使われるフラグをアーキテクチャ特有の値に設定するために使う事がで きます。他の機能として spec ファイル中の "arch" マクロがあります。 それは作成するアーキテクチャに依存する異なる作業をするために使う事が できます。他に、ヘッダ中の "Exclude" の指示です。

7.1 サンプル spec ファイル

以下は "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*

7.2 optflags

この例では、どのように /etc/rpmrc 中の "optflags" の指示が使われてい るか分かるでしょう。あなたが作成しているアーキテクチャに依存する適当 な値が RPM_OPT_FLAGS に与えられています。使用している(-m486 や -O2 のような) 通常の指示の代わりにこの変数を用いるには、パッケージの Makefile にパッチを当てなければなりません。 このソースパッケージをインストールすることによって必要となることをソー スを解凍して Makefile を調べることが 良いと感じるでしょう。 その時、Makefile のためのパッチをしらべ、何を変えねばならないかを見 てください。

7.3 マクロ

%ifarch マクロはとても重要です。多くの場合一つのパッチもしくは特定の アーキテクチャ用の二つのパッチを作る必要があるでしょう。このような場 合、RPM は適したアーキテクチャ用のパッチのみを当てることができます。

上記の例として、fileutils は64ビットマシン向けのパッチを持っています。 明らかに、これは Alpha 上にのみ当てられるべきです。 それで、私達は、64ビットパッチのところに %ifarch マクロを付け加えま した。

%ifarch axp
%patch1 -p1
%endif

これは Alpha 以外のアーキテクチャには当てられないパッチであることを 保証します。

7.4 パッケージから アーキテクチャを除外する

全てのプラットホームのために一つのディレクトリでソース RPM パッケー ジをメンテナンスできるようにするために、私達はあるアーキテクチャ上で 作成されることからパッケージを"除外"するための機能を実装しました。こ れは以下のように実行できます。

rpm --rebuild /usr/src/SRPMS/*.rpm
そして正しくパッケージが作成されます。もしあるプラットホーム向けにア プリケーションを移植していないのならば、あなたがしなければならないこ と全てはソースパッケージの spec ファイルのヘッダに以下のような一行を 付け加えることです。
ExcludeArch: axp
そのようにしてから、作成するプラットホーム上でパッケージを再作成して ください。そうすれば、あなたは Intel 上で作成するためのソースパッケー ジを手にすることになり、Alpha の部分は簡単に飛ばすことができます。

7.5 最後に

マルチ アーキテクチャ用のパッケージを作成するために RPM を用いること はたいていパッケージを両方のアーキテクチャ上で作成するよりも簡単です。 しかしながら、作成するのがとても難しいパッケージを作成すればより簡単 になっていきます。いつものように、RPM パッケージを作成するのにつまっ た時に最もよい助けとなることは似たようなソースパッケージを調べること です。


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