よく利用されるコマンドやディレクトリなどにはあらかじめマクロが定義されています。 自分で定義した変数と同様にspecファイル全体で使えます。
標準で定義されているマクロは /usr/lib/rpm/macros に書かれています。
ユーザー毎のマクロを記述するファイルは~/.rpmmacrosです。
~/.rpmmacros に書く場合には
%マクロの名前 内容
とします。 Section 4.1, “環境設定”で出てきた %_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 で定義されているマクロを使うと Chapter 5, specファイルを書くのspecファイルは次のようになります。
---------spec ファイルの例 (#から始まる行は、コメント行です)--------
#(1)データ定義部
Summary: hoge is a harehare horehore
Name: hoge
Version: 1.1
Release: 2
Source: %{name}-%{version}.tar.gz
Patch: %{name}.patch.gz
License: GPL2
Group: Local
URL: http://www.fugahogo.com/hogehoge.html
Packager: Jun Nishii <jun@vinelinux.org>
Requires: hige
BuildRequires: hige-devel
Buildroot: %{_tmppath}/%{name}-root
Summary(ja): hoge は harehare な horehore です。
%description
Hoge is a harehare horehore and convenient for fugafuga.
Enjoy!
%description -l ja
hoge は harehare な horehore で、fugafuga するときなどとても便利なツー
ルです。みんなでなかよく使いましょう。
%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
#(2)スクリプト部
%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
#(3)ファイルリスト部 --------------
%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
---------specの例はここまで-----------------------------------------
