akishin999の日記

調べた事などを書いて行きます。

CentOS 6.2 用に Ruby 1.9.3 p194 の RPM を作成する

CentOS 6.2(x86_64)上で Ruby 1.9.3 p194 の RPM を作成してみました。
当初 checkinstall を使おうと思ったのですが、紆余曲折ハマった挙句、結局上手く行かなかったため、rpmbuild を使いました。

必要なライブラリのインストール

# yum groupinstall -y "Development Tools"

これで rpm-build も一緒にインストールされます。

次に EPEL を追加して、Ruby のビルドに必要なライブラリをインストールします。

# rpm --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-7.noarch.rpm
# yum install -y zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel

rpmbuild 用ユーザの準備

rpmbuild 実行用のユーザを作成します。

# useradd rpmdevel

rpmdevel ユーザになり、rpmbuild 実行に必要なディレクトリ・マクロの作成を行います。

# su - rpmdevel
$ mkdir -p ~/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}
$ echo "%_topdir $HOME/rpm" > $HOME/.rpmmacros

以降の作業は全て rpmdevel ユーザで行います。

spec ファイル

RPM を作成するための spec ファイルを用意します。
探してみると GitHub で公開してくれている方が結構いましたので、有難く使わせて頂く事にしました。

lnxchk/ruby-1.9.3-rpm
https://github.com/lnxchk/ruby-1.9.3-rpm

imeyer/ruby-1.9.3-rpm
https://github.com/imeyer/ruby-1.9.3-rpm

rilindo/ruby-1.9.3-rpm
https://github.com/rilindo/ruby-1.9.3-rpm

私は一番上の方の spec をバージョンだけ変更して使わせて頂きました。

spec ファイルは ~/rpm/SPECS/ 以下に ruby193.spec などのファイル名で配置しておきます。

RPM の作成

ソースコードを ~/rpm/SOURCES/ 以下にダウンロードします。

$ cd ~/rpm/SOURCES/
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz

ダウンロードが完了したら rpmbuild を実行します。

$ rpmbuild -bb ~/rpm/SPECS/ruby193.spec

完了すると以下の場所に RPM ファイルが作成されます。

$ ll /home/rpmdevel/rpm/RPMS/x86_64/
合計 31344
-rw-rw-r--. 1 rpmdevel rpmdevel 26382588  627 12:10 2012 ruby-1.9.3p194-2.el6.x86_64.rpm
-rw-rw-r--. 1 rpmdevel rpmdevel  5707016  627 12:10 2012 ruby-debuginfo-1.9.3p194-2.el6.x86_64.rpm

インストール

root ユーザになり、作成されたファイルを rpm コマンドでインストールします。

$ su -
# rpm -ivh ruby-1.9.3p194-2.el6.x86_64.rpm

バージョン情報を表示してインストール確認を行います。。
念の為、gem や rake も動作することを確認します。

# ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
# gem -v
1.8.23
# rake --version
rake, version 0.9.2.2

以上です。

最近は RVM や rbenv を使う方が一般的だと思いますが、本番環境などでは RPM で入れる事も結構あるので、時間のある時に作成しておくと便利です。