Rubyの本の執筆をするような人でなくても、複数のバージョンの ruby を標準ライブラリ込みで共存させることが出来ると便利なことがある。手元では ruby-1.8.2 を使いたいけど、借りているサーバが ruby-1.8.1 なので動作確認のために、ruby-1.8.1 もインストールしたい場合など。
以下のようにすると、標準ライブラリ込みで共存させることができる。ruby の標準ライブラリは PREFX/lib/ruby/1.8/ にインストールされる。これを PREFX/lib/ruby/1.8.x/ にインストールされるように変更すればいい。IRC で教えてもらった。
次のようなパッチを configure.in に当てて、autoconf を実行。
Index: configure.in =================================================================== RCS file: /home/cvs/ruby/configure.in,v retrieving revision 1.212.2.23 diff -u -1 -p -r1.212.2.23 configure.in --- configure.in 22 Dec 2004 15:16:55 -0000 1.212.2.23 +++ configure.in 23 Jan 2005 08:55:15 -0000 @@ -1391,3 +1391,3 @@ case "$target_os" in esac -RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}" +RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}.${TEENY}" @@ -1405,3 +1405,3 @@ case "$target_os" in esac -RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}" +RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}.${TEENY}"
さらに、 mkconfig.rb に以下のようなパッチを当てる。
--- mkconfig.rb 2003-08-05 18:27:20.000000000 +0900 +++ mkconfig.rb 2005-01-23 18:10:33.000000000 +0900 @@ -106,7 +106,7 @@ print v_fast, v_others print <<EOS - CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)" + CONFIG["ruby_version"] = "$(MAJOR).$(MINOR).$(TEENY)" CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)" CONFIG["archdir"] = "$(rubylibdir)/$(arch)" CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
あとは
./configure --program-suffix=-1.8.1 && make && make install
を実行する。
$ ruby-1.8.1 -v ruby 1.8.1 (2003-12-25) [i686-linux]
最近のコメント