複数のRubyを切り替えられるようにする

Ruby1.9をメインで使いつつ、1.8系も準備しておきたかったので併存させられる環境を作ってみた。


OS: Ubuntu 9.04 Server Edition

Rubyのソースを用意する

Subversionで落としてくる。当然trunk。安定とか知りません。

$ svn co http://svn.ruby-lang.org/repos/ruby/trunk ruby
$ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8 ruby1.8
必要なライブラリを入れる

OpenSSLとconfigure作成用のautoconf
bisonがどうとかいうエラーが出るので、それも入れておく

$ sudo apt-get install libssl-dev
$ sudo apt-get install autoconf
$ sudo apt-get install bison
makeする

/local/ruby の下にバージョン番号のディレクトリを作成して、そこに入れる。
プログラムにはバージョン番号を付けておく

$ cd ruby
$ autoconf
$ ./configure --prefix=/local/ruby/<VERSION> --program-suffix=<VERSION> --with-readline-dir=/local/ruby/<VERSION>
$ make
$ make test
$ sudo make install
シンボリックリンクを張る

aliasを付けてもいいけど、gemとか他のプログラムが /usr/bin/ruby とかを見ている場合があるので、シンボリックリンクを作っておく。
投げやりなシェルスクリプトにしてみる。

$ less switch_ruby.sh
#!/bin/sh
ORG_PATH=/local/ruby/$2/bin
PREFIX=/usr/local/bin

for NAME in ruby gem irb rdoc ri 
do
  ln -s $ORG_PATH/$NAME$1 $PREFIX/$NAME
  echo "/usr/bin/$NAME linked @ $ORG_PATH/$NAME$1"
done

$ ./switch_ruby.sh 1.9 1.9.1
併存させたいバージョンの数だけ繰り返す

1.8系はrubygemsのビルドもあるので注意。今回はめんどくさいのでやってない。


バージョンを切り替えたい場合はシンボリックリンクを入れ替えればよし。
これでtrunk Rubyライフを満喫!!