脳ざらし紀行


2005-01-23

_ [Ruby] 複数のバージョンの ruby を共存させる

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]
お名前:
E-mail:
コメント:
本日のリンク元

最近のコメント

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|04|05|
2011|04|
2012|03|07|
2013|01|02|07|
トップ «前の日記(2005-01-20) 最新 次の日記(2005-01-24)» 編集