HowToInstallRubys

2007-12-18 22:32:56 +0900 (563d); rev 6

手元の環境に複数のバージョンのrubyをインストールしておくと、どのメソッドがどのバージョンから 利用可能になったかなどの調査に役立ちます。 以下では複数のバージョンのrubyをインストールして共存させる方法を解説します。

Windows

バイナリ

1.8系のリリース版については、mswin32版のバイナリパッケージを利用するのが最も簡単だと思います。

上記のページから 1.8.{0,1,2,3,4}が入手可能です。1.8.5、1.8.6はpatchlevelの違うものがいくつかリリースされることに注意してください。

あとは、それぞれのアーカイブを別のディレクトリに展開すれば共存可能です。

ビルド

1.9系や1.8系の最新版で動作を確認したい場合は、バイナリパッケージがないので自前でコンパイルしなければなりません。最新版のRubyのソースを取得するには

Subversionから取得する
http://www.ruby-lang.org/ja/documentation/repository-guide
スナップショットを利用する
http://www.ruby-lang.org/ja/downloads/

という2つの方法がありますが、Subversionを利用する方が追従が簡単なのでより良いでしょう。

MS Windows での ruby のビルドには

などいろいろな手段が存在します。作ったrubyのバイナリを Cygwinから利用したいならCygwinで、 cmd.exeから利用したいならMinGWでビルドするのが良いでしょう(VisualStudioをお持ちならVCでも構いません)。

実際のコンパイル作業については

等が参考になります。MinGW + Cygwin か MinGW + MSYS を選べば、下で述べる Linux の場合と同じ方法で 複数のバージョンの ruby をインストールすることができます。 ちなみに、MinGW とは Windows 用の GNU 開発環境です。Minimalist GNU for Windows という名前が表すとおり 開発環境としては最低限のものしか提供されないので、bison, autoconf, make などは Cygwin か MSYS のものを利用 する必要があります。

Unix系

prefix ごと分ける方法

prefix ごと分ける方法を説明します。 ここでは仮に /usr/local/pkg/ruby-1.8.x 以下にインストールするとしましょう。

~/src/ruby-1.8.0 $ ./configure --prefix=/usr/local/pkg/ruby-1.8.0
~/src/ruby-1.8.0 $ make
~/src/ruby-1.8.0 $ sudo make install
~/src/ruby-1.8.0 $ sudo ln -s ../pkg/ruby-1.8.0/bin/ruby /usr/local/bin/ruby-1.8.0

最後の ln -s がポイントです。 いちいち PATH を通すのは面倒なので、 ruby だけ /usr/local/bin に集めてしまいます。

あとは 1.8.x すべてで同じことをすれば終わりです。 以下のようなシェルスクリプトを書いてサクッと終わらせることもできます。

for rev in 0 1 2 3 4 5
do
   cd $HOME/src/ruby-1.8.$rev
   ./configure --prefix=/usr/local/pkg/ruby-1.8.$rev
   make
   sudo make install
   sudo ln -s ../pkg/ruby-1.8.$rev/bin/ruby /usr/local/bin/ruby-1.8.$rev
done

configure.in を書き換える方法

Ruby 1.8.x がインストールされる場所は、

/usr/local/bin
/usr/local/lib/ruby/1.8/

の2箇所です。 なので戦略としては、「/usr/local/bin」にインストールされるものには「-1.8.x」というsuffixを付けます。 そしてライブラリのインストール先を「/usr/local/lib/ruby/1.8/」から「/usr/local/lib/ruby/1.8.x/」 に変えます。これで、複数のバージョンのrubyを共存させることが出来ます。

ruby 1.8.2 以降では、configure.inとmkconfig.rbを変更するだけです。 configure.in では以下のように2箇所変更します。行番号はバージョンにより異なるかも知れません。

--- configure.in~
+++ configure.in
@@ -1443,3 +1443,3 @@
 esac
-RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}"
+RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}.${TEENY}"

@@ -1457,3 +1457,3 @@
 esac
-RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
+RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}.${TEENY}"

mkconfig.rbは1箇所のみです。

--- mkconfig.rb~
+++ mkconfig.rb
@@ -108,3 +108,3 @@
 print <<EOS
-  CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
+  CONFIG["ruby_version"] = "$(MAJOR).$(MINOR).$(TEENY)"
   CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"

後は、autoconfを実行してconfigureファイルを作成し

$ autoconf
$ ./configure --program-suffix=-1.8.x

configureに上のようなオプションを付けて実行します。 そして、

$ make
$ make test
$ (su)
# make install-nodoc

です。rdocはこの方法では同じディレクトリにインストールしてしまうので、 install-nodocでインストールして下さい。


system revision 1.162