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は通るかなー