
- コンパクトで軽量な日本語ディストリビューション -
スクリプト部では、パッケージの作成やインストール等の手順を記述します。
# スクリプト部
%prep #rpmを構築する前の準備です。
rm -rf $RPM_BUILD_ROOT
%setup #ソースをBUILDに展開します。
%patch -p1 #パッチをあてます。
%build #makeのための手順を書きます。
make
(cd man; make man)
%install #installのための手順を書きます。
make prefix=${RPM_BUILD_ROOT}/usr/local install
(cd man; make prefix=${RPM_BUILD_ROOT}/usr/local install.man)
%clean #rpmを作ったあとの後始末です。
rm -rf $RPM_BUILD_ROOT
スクリプト部は、表 II.5-4で示すセクションに分かれます。
各セクションは、独立したbashスクリプトとして実行できるように記述します。
各セクション名が現れた時に #!/bin/sh -eが起動され(Vine Linuxでは/bin/shは/bin/bashにsym.linkされてる)、 各環境変数(RPM_SOURCE_DIRやRPM_PACKAGE_NAMEなど)が定義された後、 次のセクション名が出てくるまで、記述されているスクリプトが実行されます。
環境変数の詳細については、セクション III.8.1 - 環境変数を参照してください。
| セクション名 | 概要 | 詳細説明 |
|---|---|---|
| %prep | ソースをビルドする前に実施する準備事項 | セクション II.5.2.1 - %prepセクション |
| %build | ソースのビルド手順 | セクション II.5.2.2 - %buildセクション |
| %install | ソースからのインストール手順 | セクション II.5.2.3 - %installセクション |
| %check | インストールが正しく実行されたかを検査する手順 | セクション II.5.2.4 - %checkセクション |
| %clean | パッケージ作成後の後始末 | セクション II.5.2.5 - %cleanセクション |
| その他 | パッケージのインストール等の前後に実行する手順 | 第III.11章 - スクリプト部で使用できるその他のセクション |
以下、各セクションの詳細を解説します。
ソースをビルドする前に実施する準備事項をシェルスクリプトで記述します。
以下で説明する%setup,%patchなどのマクロを用いて、ソースの展開やパッチの適用などを行います。
なお、このセクションの最初で
rm -rf ${RPM_BUILD_ROOT}tarでアーカイブされ、 gzipまたはbzip2圧縮されたソースを展開します。 %setupとオプションなしで書くと、以下が順に行われます。
%setupの動作を制御する必要がある場合は、第III.10章 - %setupマクロの詳細を参照してください。
%setupで展開したソースにパッチをあてるためのマクロとしてはたらきます。
オプションなしで%patchと書くと、
patch -p0 -s < ${RPM_SOURCE_DIR}/<Patchで指定したファイル>例 II.5-6のように書くと、
patch -p1 -s < ${RPM_SOURCE_DIR}/<Patchで指定したファイル>パッチファイルが複数ある場合、Patch0, Patch1,...に対して、
%patch0 -p1 %patch1 -p1
ソースをmakeするスクリプトの開始であることを示し、また、 %setupで指定したディレクトリにcdするマクロとしてはたらきます。 以下には、makeを行うときの手順をスクリプトとして書きます。
ここでの処理で必要となるパッケージ等は、BuildRequires(build): で指定します。
autoconf化されたソースなどmakeの前に
$ configure --prefix=/usr
configureスクリプトが用意されている場合には、%configureマクロを利用すると便利です。
%configureマクロは、/usr/lib/rpm/macrosで次のように定義されており、 Vine Linux推奨のコンパイルフラグやインストールディレクトリを設定できます。
%configure \
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \
./configure --host=%{_host} --build=%{_build} \\\
--target=%{_target_platform} \\\
--program-prefix=%{?_program_prefix} \\\
--prefix=%{_prefix} \\\
--exec-prefix=%{_exec_prefix} \\\
--bindir=%{_bindir} \\\
--sbindir=%{_sbindir} \\\
--sysconfdir=%{_sysconfdir} \\\
--datadir=%{_datadir} \\\
--includedir=%{_includedir} \\\
--libdir=%{_libdir} \\\
--libexecdir=%{_libexecdir} \\\
--localstatedir=%{_localstatedir} \\\
--sharedstatedir=%{_sharedstatedir} \\\
--mandir=%{_mandir} \\\
--infodir=%{_infodir}
ここで定義されていないオプション、例えば--disable-scrollkeeperというようなオプションが必要な場合には
%configure --disable-scroolkeeper
ファイルをinstallするスクリプトの開始であることを示し、また、 %setupで指定したディレクトリにcdするマクロとしてはたらきます。 以下には、installを行うときの手順を示します。 データ定義部のBuildRootで設定したディレクトリ(${RPM_BUILD_ROOT}) の下に全てのファイルがインストールされるように、工夫しましょう。 Makefileが短いときには、修正してpatchをつくるかわりに、ここに、 cp, installコマンド等を用いたinstallスクリプトを書くのも一手です。
%setup のところと同じように、マクロ %{SOURCE数字} を使って Source: で指定したファイルを直接インストールすることもできます。
%{__install} -m 644 %{SOURCE2} %{buildroot}/where/there/なお、rpm-3.0.5以降では、インストールされたバイナリは rpmパッケージにする段階で自動的にstripされますので、 %installでbinaryのstripを行う必要はありません。
ここでの処理で必要となるパッケージ等は、 BuildRequires(install): で指定します。
install が正しく実行されたかをcheckするスクリプトの開始であることを示します。 %setupで指定したディレクトリにcdするマクロとしてはたらきます。 以下には、make test や make check などを実行するときの手順を示します。
GNOME などが利用する desktopファイルの書式チェックなどを行うこともできます。 セクション III.13.1 - GNOME,KDE,Xfce のメニューに追加するためにを参照してください。
rpm-4.2以降で実装された機能です。
ここでの処理で必要となるパッケージ等は、 BuildRequires(install): で指定します。