* RPMパッケージをSPECファイルを作ってビルドする [#i32fe4c6]
** ソースを用意する。 [#pb308a3f]
** ソースを用意する [#pb308a3f]
ここではSlony-I ver 1.2.9のパッケージを作ることにする。取得したファイルはslony1-1.2.9.tar.bz2とする。
** パッケージ作成ツリーの設定 [#xddbb766]
一般ユーザでパッケージをビルドするには以下のように$HOME/.rpmmacrosに%_topdirなどを設定する。デフォルトでは/usr/src/redhatなのでROOT権限が必要。
%_topdir /home/taro/RPM
%_srcrpmdir /home/taro/RPM/SRPMS
%_specdir /home/taro/RPM/SPECS
%_sourcedir /home/taro/RPM/SOURCES
%_builddir /home/taro/RPM/BUILD
実際にディレクトリを作る。
mkdir -p ~/RPM/{BUILD,SOURCES,SPECS,SRPMS,RPMS/{i386,i586,i686,noarch}}
*** %_topdirなどのマクロを確認するには [#q141b58d]
以下のコマンドを実行する。
rpm --swhorc |grep _topdir
rpm --showrc |grep _topdir
もしくは、以下のコマンドを実行する。
rpm --eval %_topdir
** SPECファイルの作成 [#k00998b6]
SPECファイルは以下の通り。
- SPECファイル名:slony1-1.spec
- ソースファイル名:%_topdir/SOURCES/slony1-1.2.9.tar.bz2
Summary: Slony-I
Name: slony1
Version: 1.2.9
Release: 1
Source0: %{name}-%{version}.tar.bz2
License: GPL
Group: Applications/Databases
BuildRoot: %{_builddir}/%{name}-root
%description
Slony-I is a "master to multiple slaves" replication system
supporting cascading and failover.
%define prefix /usr/local
%prep
%setup -q
%build
./configure --prefix=%{prefix}
make
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%{prefix}/bin/*
%{_libdir}/pgsql/slony1_funcs.so
%{_libdir}/pgsql/xxid.so
%{_datadir}/pgsql/*.sql
*** %filesセクション [#ud39cb22]
インストールするファイルを列挙する。いったん仮ディレクトリなどに手動でインストールをしてみて、インストールされるファイルを確認しておくとよい。
%defattrを使って、パーミッションやオーナーを指定できる。例えば以下のように。
%defattr(755,-,-)
/usr/bin/hoge
/usr/lib/hoge
%defattr(644,-,-)
/usr/share/locale/ja
/usr/share/locale/lv
あるいは%attrで個別に指定してもよい。
%attr(755,root,root) /usr/lib/hoge
*** マクロ変数の定義 [#w03f8af3]
%defineで自分でマクロを定義出来る。
%define prefix /usr/local
なお、ここで使われているマクロ変数のデフォル値は以下の通り。
- %{_prefix} /usr
- %{_bindir} %{_prefix}/bin
- %{_libdir} %{_prefix}/lib
- %{_datadir} %{_prefix}/share
*** build root [#b8609acc]
シェル変数RPM_BUILD_ROOT(BuildRoot)を定義して、ソフトウェアの一時的なインストール先を指定する。
GNUなどが配布するソフトウェアの多くは、make installを実行する際にDESTDIRを定義すると、すべてのインストール・パスの先頭にDESTDIRの値が追加される。もし./configure --prefix=$RPM_BUILD_ROOTでコンパイルして、インストール後に$RPM_BUILD_ROOTのフルパスを利用するソフトウェアがあるとマズイので。
*** グループ名 [#sdb944b9]
$ cat /usr/share/doc/rpm-4.4.2/GROUPS
Amusements/Games
Amusements/Graphics
Applications/Archiving
Applications/Communications
Applications/Databases
Applications/Editors
Applications/Emulators
Applications/Engineering
Applications/File
Applications/Internet
Applications/Multimedia
Applications/Productivity
Applications/Publishing
Applications/System
Applications/Text
Development/Debuggers
Development/Languages
Development/Libraries
Development/System
Development/Tools
Documentation
System Environment/Base
System Environment/Daemons
System Environment/Kernel
System Environment/Libraries
System Environment/Shells
User Interface/Desktops
User Interface/X
User Interface/X Hardware Support
** SPECファイルからRPMパッケージを作る [#k951263c]
rpmbuild -ba slony-1.29-1.spec
** RPMパッケージをインストールする [#g82b334a]
ROOT権限が必要。
rpm -ivh slony-1.29-1.rpm
** 参考 [#n8bb0e4a]
- http://www-06.ibm.com/jp/developerworks/linux/020125/j_l-rpm1.html
- http://www-06.ibm.com/jp/developerworks/linux/020222/j_l-rpm2.html
- http://nekomimists.ddo.jp/~tom/nekokick/rpm.html