8.3. 標準で定義されているマクロ

よく利用されるコマンドやディレクトリなどにはあらかじめマクロが定義されています。 自分で定義した変数と同様にSPECファイル全体で使えます。

標準で定義されているマクロは /usr/lib/rpm/macros に書かれています。 ユーザー毎のマクロを記述するファイルは~/.rpmmacrosです。

~/.rpmmacros に書く場合には

%マクロの名前 内容

とします。 2章パッケージ作成に必要なディレクトリの準備で出てきた %_topdir などもマクロです。

ユーザー毎のマクロと、標準で定義されているマクロをあわせたものは、 rpmコマンドの --showrcオプションで確認できます。

$ rpm --showrc

また、それぞれのマクロがどんなものかは、

$ rpm --eval "%{マクロ}"

のようにすると確認できます。

標準で定義されているマクロについてはなるべく利用してください。 SPECファイルのメンテナンスしやすさの向上につながります。

たとえば、%{configure} や %{makeinstall} といったマクロを利用することで、 %build や %install の部分を簡潔に書くことができる場合があります。

%build
%{configure}
%{__make}

%install
%{makeinstall}

$ rpm --eval "%{configure}"

などとやってそれぞれのマクロがどんなものか確認して下さい。

rpm 4.x および Vine Linux 4.1 で定義されているマクロを使うと 5章SPECファイルの記述のSPECファイルは次のようになります。

#---------SPEC ファイルの例 (#から始まる行は、コメント行です)--------

# 基本情報
Summary: hoge is a harehare horehore
Summary(ja): hoge は harehare な horehore です。
Name: hoge
Version: 1.1
Release: 1%{?_dist_release}
License: GPL2
Group: Local
URL: http://www.fugahogo.com/hogehoge.html
Vendor:	Project Vine
Distribution: Vine Linux
Packager: yourid,otherid
Packager: Jun Nishii <jun@vinelinux.org>

# パッケージの作成時に必要となる情報
Source: %{name}-%{version}.tar.gz
Patch: %{name}.patch.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-root

# 依存情報
Requires:	piyo
BuildRequires:	piyo-devel

# 詳しい解説
%description
Hoge is a harehare horehore and convenient for fugafuga.
Enjoy!

%description -l ja
hoge は harehare な horehore で、fugafuga するときなどとても便利なツー
ルです。みんなでなかよく使いましょう。

# スクリプト部
%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}/%{_prefix}/local install
(cd man; %{__make} prefix=${RPM_BUILD_ROOT}/%{_prefix}/local install.man)

%clean      #rpmを作ったあとの後始末です。
%{__rm} -rf $RPM_BUILD_ROOT

# ファイルリスト部 --------------
%files
%defattr(-,root,root)
%doc README
%doc docs/ 
%{_bindir}/hoge.bin
%{_libdir}/hoge/
%{_mandir}/man1/hoge.1.gz
%dir %{_libdir}/hoge/
%config %{_libdir}/hoge/fuga.conf

# 更新履歴
%changelog
* Tue Feb 16 1999 Jun Nishii <jun@vinelinux.org> 1.1-2
- added Japanese messages

* Mon Feb 15 1999 Jun Nishii <jun@vinelinux.org> 1.1-1
- first release for version 1.1

#---------SPECファイルの例はここまで-----------------------------------------