rubyのRPMパッケージをつくる(to CentOS 5.2)
CentOS 5.2を用いた実験環境で、バージョン1.8.6以上のrubyをインストールする必要に迫られた。
現時点で、CentOS 5.2に提供されているrubyは1.8.5。よい機会なのでパッケージを作ることにした。初挑戦。
はじめにtarボール(ruby-1.8.6.tar.gz)を入手
Ruby 1.8.6 リリース
http://www.ruby-lang.org/ja/news/2007/03/12/ruby-1-8-6-release/
このソースファイルからパッケージを生成する。
まずは展開してmake。
$ gtar xvzf ./ruby-1.8.6.tar.gz
:
$ cd ruby-1.8.6
$ ./configure –prefix=/usr
:
$ make
:
SRPMファイルのないtarボールからパッケージを生成する場合はcheckinstallを用いるのが楽であるよう。
ソースファイルからRPMファイルを作成するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/530mkrpmfs.html
!!!checkinstallがインストールされていない。
じゃあ、と、yumでインストールしようとしたらNothing to doだ。
CentOS4.5にRPM作成ツール(checkinstall)のインストール
http://blog.livedoor.jp/glantank/archives/50935741.html
記述によれば、yumに–enablerepo=rpmforgeオプションを与えているけど、これは?
CentOS 5 で DAG(rpmforge) の yum repository 追加
http://blog.enjoitech.jp/article/96
DAG(rpmforge) は redhat 及び fedora 向けの追加パッケージ群です。
わかった。
手引きどおりに、DAGからRedhat5のrpmforge(rpmforge-release-0.3.6-1.el5.rf.i386.rpm)を入手してインストール。
DAG
http://dag.wieers.com/rpm/packages/rpmforge-release/
$ wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ su
# rpm -hiv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
インストール完了したら設定ファイルの書き換えを行う。
# vi /etc/yum.repos.d/rpmforge.repo
enabled を 0 に設定(初期値1)。
こうすることで、yumコマンドに–enablerepo=rpmforgeオプションを付けたときだけ、rpmforgeを見に行くようになる。
現時点の差分は以下。だいぶ違う。
# yum list | wc -l
5876
# yum list –enablerepo=rpmforge | wc -l
9239
で、checkinstallをインストール。
# yum –enablerepo=rpmforge install checkinstall
:
Installed: checkinstall.i386 0:1.6.0-3.el5.rf
Complete!
よし。
いよいよパッケージ生成。
Ruby1.8.7のインストール
http://blog.absolute-zero.info/?cat=30
checkinstallを使ってRPM化していきます。rubyのようなインストールしながら
ファイルをチェックして進んでいくタイプの場合には”-fstrans=no”をつけてあげる必要があります。
なるほど。
$ su
# checkinstall –fstrans=no
checkinstall 1.6.0, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:
Preparing package documentation…OK
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R
**************************************
**** RPM package creation selected ***
**************************************
This package will be built according to these values:
1 – Summary: [ Package created with checkinstall 1.6.0 ]
2 – Name: [ ruby ]
3 – Version: [ 1.8.6 ]
4 – Release: [ 1 ]
5 – License: [ GPL ]
6 – Group: [ Applications/System ]
7 – Architecture: [ i386 ]
8 – Source location: [ ruby-1.8.6 ]
9 – Alternate source location: [ ]
10 – Requires: [ ]
11 – Provides: [ ruby ]
Enter a number to change any of them or press ENTER to continue:
Installing with make install…
========================= Installation results ===========================
./miniruby ./instruby.rb –dest-dir=”” –extout=”.ext” –make=”make” –mflags=”” –make-flags=”” –installed-list .installed.list –mantype=”doc”
installing binary commands
installing command scripts
installing library scripts
installing headers
installing manpages
installing extension objects
installing extension scripts
======================== Installation successful ==========================
Copying documentation directory…
./
./doc/
./doc/irb/
./doc/irb/irb.rd.ja
./doc/irb/irb-tools.rd.ja
./doc/irb/irb.rd
./doc/NEWS-1.8.0
./doc/shell.rd.ja
./doc/forwardable.rd.ja
./doc/forwardable.rd
./doc/ChangeLog-1.8.0
./doc/shell.rd
./COPYING.ja
./GPL
./README.EXT
./NEWS
./README
./README.EXT.ja
./ChangeLog
./COPYING
./README.ja
Some of the files created by the installation are inside the build
directory: /home/hoge/rpm/ruby-1.8.6
You probably don’t want them to be included in the package,
especially if they are inside your home directory.
Do you want me to list them? [n]:
Should I exclude them from the package? (Saying yes is a good idea) [y]:
Copying files to the temporary directory…OK
Striping ELF binaries and libraries…OK
Compressing man pages…OK
Building file list…OK
Building RPM package…OK
NOTE: The package will not be installed
Erasing temporary files…OK
Writing backup package…OK
Deleting temp dir…
OK
**********************************************************************
Done. The new package has been saved to
/usr/src/redhat/RPMS/i386/ruby-1.8.6-1.i386.rpm
You can install it in your system anytime using:
rpm -i ruby-1.8.6-1.i386.rpm
**********************************************************************
できた。
今回は初めての事だったので、準備作業に手間取ったがパッケージ生成事態はそれほど難しくはなかった。次回はもっとうまくできそうだ。
なお今回、色々と調べている中で以下設定を行った。結果として本題に関与しないが備忘録として残しておく。一般ユーザでcheckinstall出来ると思ったのだ(出来る?)。
オレオレrpmパッケージの作り方(基本編)
http://openlab.dino.co.jp/2007/11/16/13162254.html
$ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ echo “%_topdir /home/hoge/rpm” > ~/.rpmmacros