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

参考


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS