ruby-build で、好きな version の ruby を入れるお話
イントロ
毎度おなじみ ruby-build ですが、入れることができる ruby の version と rubygems の version は制限があります。
とはいえ普通に ruby を使う分には、提供されているもので何の問題も無いのですが。
rbenv を使って、ちょっとマニアックな ruby の version を試したい、という貴方の為に。
手順
1. source ファイルを作成する
touch ~/.rbenv/plugins/ruby-build/share/ruby-build/1.8.7-p248
何と言えばいいかわかりませんが(仮に source ファイルと呼ぶ)、ruby-build の download 元となるファイルを作成します。
「1.8.7-p248」 の部分は自分で自在に定義可能です。
2. source ファイルを書く
先ほど touch したファイルの中身を書いていきます。
require_gcc install_package "ruby-1.8.7-p248" "http://cache.ruby-lang.org/pub/ruby/ruby-1.8.7-p248.tar.gz#60a65374689ac8b90be54ca9c61c48e" auto_tcltk standard install_package "rubygems-1.6.2" "http://production.cf.rubygems.org/rubygems/rubygems-1.6.2.tgz#0c95a9869914ba1a45bf71d3b8048420" ruby
ファイルにどのような事を書けばよいかわからなければ、install したい version に一番近いファイルを見ながら、それっぽく書いていきましょう。
なんとなく自分が把握しているのは以下のとおり
- 基本は install_package 関数に、ruby の version 名と、tar.gz ファイルの URL を書く
- URL からソースを引っ張ってきて、展開して install してくれる
- 肝心のURL は他の version のURLを参考にし、目当てのブツを見つけ出す
- require_gcc はゴニョゴニョして、環境変数 CC に値をセットしてくれるもの
- auto_tcltk は何も考えず付けておけば良い
- OS を自動判別して、build に必要な環境変数を付与してくれる(もしくは付与しなかったり)
- 1.9.3 以降は require_gcc は不要
- 代わりに 1.9.3 からは libyaml が必要になっている
- 1.9.3 以降の source ファイルを読む
- "http://cache.ruby-lang.org/pub/ruby/ruby-1.8.7-p248.tar.gz#60a65374689ac8b90be54ca9c61c48e" の # 以降の値は ruby-1.8.7-p248.tar.gz の md5 checksum 値(必須)
- md5 を予め算出しておく
- 記事の一番下の参考を見てください
- よくわからない記述があったら、~/.rbenv/plugins/ruby-build/bin/ruby-build で関数が定義されているので探して、読むべし。
3. install する
後は普通に install するだけ。意外とあっさりできました。
場合によっては、openssl や readline の path を環境変数で指定しないと install 出来ないかもしれません。
$ rbenv install 1.8.7-p248 #=> Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Downloading ruby-1.8.7-p248.tar.gz... -> http://cache.ruby-lang.org/pub/ruby/ruby-1.8.7-p248.tar.gz Installing ruby-1.8.7-p248... Installed ruby-1.8.7-p248 to /Users/horowitz/.rbenv/versions/1.8.7-p248 Downloading rubygems-1.6.2.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/0c95a9869914ba1a45bf71d3b8048420 Installing rubygems-1.6.2... Installed rubygems-1.6.2 to /Users/horowitz/.rbenv/versions/1.8.7-p248 $ ruby -v ruby 1.8.7 (2009-12-24 patchlevel 248) [i686-darwin12.5.0]
参考
- ActiveScriptRuby and Other packages
- md5 を算出する script が置いてあります