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 のパッケージを用意して欲しいところだな。