- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Linux/パッケージ/RPM/RPMパッケージをSPECファイルを作ってビルドする へ行く。
- 1 (2007-05-07 (月) 04:22:23)
- 2 (2007-09-24 (月) 20:51:09)
RPMパッケージをSPECファイルを作ってビルドする
ソースを用意する。
ここではSlony-I ver 1.2.9のパッケージを作ることにする。取得したファイルはslony1-1.2.9.tar.bz2とする。
パッケージ作成ツリーの設定
一般ユーザでパッケージをビルドするには以下のように$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などのマクロを確認するには
以下のコマンドを実行する。
rpm --swhorc |grep _topdir
もしくは、以下のコマンドを実行する。
rpm --eval %_topdir
SPECファイルの作成
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セクション
インストールするファイルを列挙する。いったん仮ディレクトリなどに手動でインストールをしてみて、インストールされるファイルを確認しておくとよい。
%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
マクロ変数の定義
%defineで自分でマクロを定義出来る。
%define prefix /usr/local
なお、ここで使われているマクロ変数のデフォル値は以下の通り。
- %{_prefix} /usr
- %{_bindir} %{_prefix}/bin
- %{_libdir} %{_prefix}/lib
- %{_datadir} %{_prefix}/share
build root
シェル変数RPM_BUILD_ROOT(BuildRoot)を定義して、ソフトウェアの一時的なインストール先を指定する。
GNUなどが配布するソフトウェアの多くは、make installを実行する際にDESTDIRを定義すると、すべてのインストール・パスの先頭にDESTDIRの値が追加される。もし./configure --prefix=$RPM_BUILD_ROOTでコンパイルして、インストール後に$RPM_BUILD_ROOTのフルパスを利用するソフトウェアがあるとマズイので。
グループ名
$ 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パッケージを作る
rpmbuild -ba slony-1.29-1.spec
RPMパッケージをインストールする
ROOT権限が必要。
rpm -ivh slony-1.29-1.rpm