erlang rpmを作ってみる
はじめに
ubfとかebfとかっていうバイナリフォーマットに興味があってerlangをインストールしようとしました.CentOS5.5で,yumを使ってさくっとインストールしてみたんですが,肝心のプログラムがmakeできません.識者に聞いてみた所,バージョン古すぎとご神託を授かりました.そこで最新のバージョンをインストールとあいなったのですが,せっかくなのでrpm化しようとしてはまってしまいました.今回はrpm化するまでの苦闘の道のりです.
環境づくり
vmware上のcentosでrpmを作ってみました.しばらくほっといたvmなので,まずはupdateから実行して開発環境をインストールします.
$ sudo yum update $ sudo yum groupinstall "Development Tools" $ sudo yum install rpmdevtools $ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS} $ echo "%_topdir /home/daiba/rpm" > ~/.rpmmacros
これで基本的な環境はできあがったので,希望するerlangソースをダウンロードページから落とします
$ cd rpm/SOURCES $ wget http://www.erlang.org/download/otp_src_R13B04.tar.gz
後はspecファイルを作ればOK.が,これが大変なわけです.
spec file
ぐぐってみたら,FC用のerlang spec fileを見つけました.これをベースに作ってみたspec fileは次のようになります.
Name: my-erlang
Version: R13B
Release: 13.4%{?dist}
Summary: General-purpose programming language and runtime environment
Group: Development/Languages
License: Erlang Public License
URL: http://www.erlang.org
Source: otp_src_R13B04.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: ncurses-devel
%description
Erlang is a general-purpose programming language and runtime
environment. Erlang has built-in support for concurrency, distribution
and fault tolerance. Erlang is used in several large telecommunication
systems from Ericsson.
%prep
[ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
%setup -n otp_src_R13B04
%build
%configure
make
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc AUTHORS EPLICENCE README.md
%{_bindir}/*
%{_libdir}/erlang
%post
%define erlangdir %{_libdir}/erlang
%{erlangdir}/Install -minimal %{erlangdir} >/dev/null 2>/dev/nullここまで作るのに涙なくしては語れないあれやこれやはありましたが,それはまた別の機会に.まねして作成したspec fileなのでよくわからないんですが,postセクションでInstallというコマンドを実行してるので,postunセクションで何か作業をしないといけない気がするんですが,よくわかりませんでした.とりあえず,インストールしても問題なかったので,しばらく使ってみようと思っています.
rpmを作る
spec file をerlang.specという名前にしてSPECSディレクトリに置いてbuildrpmを実行します.
$ cd ~/rpm $ cd SPECS $ vi erlang.spec $ rpmbuild -bb erlang.spec
そうすると延々またされたあげくにRPMS配下にmy-erlang-debuginfo-R13B-13.4.x86_64.rpmとmy-erlang-R13B-13.4.x86_64.rpmというrpmファイルができます.これでできあがり,
$ sudo rpm -ivh my-erlang-R13B-13.4.x86_64.rpm
とやればインストールできます.インストールできたか試すと
$ erl Erlang R13B04 (erts-5.7.5) [source] [64-bit] [rq:1] [async-threads:0] [kernel-poll:false] Eshell V5.7.5 (abort with ^G) 1> 123456789 * 9 . 1111111101
となりました.多分問題ないんでしょう.さて,最初にやろうとしたmakeは通るかなー