CentOS6 に Ruby1.9.3 をインストールする手順

CentOS6 には Ruby1.9 のパッケージが無いから、Ruby1.9 を使うためにはソースコードからコンパイルする必要がある。でも、yum でインストールできないとなると、更新や削除したいとき不便。パッケージ化してインストールしたい。

そこで、checkinstall を使ってパッケージを作成して、それをインストールすることにした。以下、作業メモ。

checkinstall をインストール

checkinstallソースコードからコンパイルする必要あり。
まずは必要なパッケージを yum でインストール。

yum -y install git
yum -y install gcc
yum -y install rpm-build

checkinstall のソースコードを Git リポジトリからダウンロード。

cd /usr/local/src
git clone http://checkinstall.izto.org/checkinstall.git/

checkinstall をコンパイルしてインストール。

cd checkinstall
make
make install

終わったら、checkinstall 自体もパッケージ化して、置き換える。

checkinstall

インストール時の設定はすべてデフォルトのまま。変更しない。

これで checkinstall のインストールが完了。

Ruby1.9.3 をインストールする下準備

Ruby のコンパイルに必要なパッケージは結構ある。足りないと後でコンパイルし直すハメになるので、あらかじめ以下を全部インストールしておく。

yum -y install gcc-c++
yum -y install zlib-devel
yum -y install httpd-devel
yum -y install openssl-devel
yum -y install curl-devel
yum -y install ncurses-devel
yum -y install gdbm-devel
yum -y install readline-devel
yum -y install sqlite-devel

libyaml-devel もインストールしないといけないけど、リポジトリにパッケージが無い。
EPEL には存在するので、Yum リポジトリに EPEL を追加する。

wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
rpm --import RPM-GPG-KEY-EPEL-6
rm -f RPM-GPG-KEY-EPEL-6 
vi /etc/yum.repos.d/epel.repo

epel.repo には次の内容を記述する。

[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0

あとは libyaml-devel をインストール。

 yum --enablerepo=epel install libyaml-devel

ふぅ。ようやく下準備が終わった。

Ruby1.9.3 をインストール

Ruby1.9.3 のソースコードを入手し解凍。

cd /usr/local/src
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz
tar zxvf ruby-1.9.3-p125.tar.gz
cd ruby-1.9.3-p125

make まで実行。

./configure
make

checkinstall で rpm を作成。

checkinstall --fstrans=no

checkinstall の最後の質問で、「パッケージから除外するか?」に yes と答えたら、そこから先に進まなくなった。仕方ないので no を選択。

/root/rpmbuild has no SOURCES directory. Please write the path to the RPM source directory tree

っていうエラーが出たら

/root/rpmbuild/SOURCES

でディレクトリを作成すればいいっぽい。

パッケージが出来たら、rpm コマンドでインストールする。

 rpm -i "rpmファイルのパス"

rpm ファイルのパスは checkinstall で rpm を生成したときに表示されるやつ。

「/usr/bin/rubyを必要としてる」みたいな意味不明なエラーがでたけど、

rpm -ivh --nodeps rpmファイルのパス

で依存関係を無視してやったらインストールできた。これでいいのか自信は無い。

何はともあれ CentOS に Ruby1.9.3 をインストールできた。でも面倒過ぎて自分でやりたくないのが本音。できれば、Ubuntu みたいに Ruby1.9 のパッケージを用意して欲しいところだな。