読者です 読者をやめる 読者になる 読者になる

Ruby をソースからビルドして rbenv で使う方法

まず、Ruby 本体に手を加えてそれをフィードバックする可能性があるなら、GitHub 上で fork してからそれを clone ましょう。そうでなくて単に最新の Ruby を追いかけたい!というような場合は、https://github.com/ruby/ruby.git を clone すればよいでしょう。

clone したら trunk ブランチをチェックアウトします。(GitHub 上でデフォルトのブランチを trunk ブランチにしておくと良いと思います。)

$ git clone git@github.com:<username>/ruby.git ~/ruby 

もしくは

$ git clone https://github.com/ruby/ruby.git ~/ruby

その後、

$ cd ~/ruby
$ git checkout trunk

とします。
チェックアウトしたばかりだと configure ファイルがないので、README に書かれているとおりに autoconf を実行します。

$ autoconf

これで configure が生成されます。

次に、以下の記事に書かれているような方法で、./configure を実行します。
このとき、--prefix オプションで ~/.rbenv の中にインストールされるようにします。
独自ビルドした ruby を rbenv で使う

$ ./configure --prefix=$HOME/.rbenv/versions/fix9367 --enable-shared --enable-debug-env CPPFLAGS='-DRUBY_DEBUG_ENV -DARRAY_DEBUG'

私の場合は Bug#9367 の修正を行いたかったので、インストール先は ~/.rbenv/versions/fix9367 としました。

それ以外のオプションは上記記事と同じにしてあります。

configure が完了したら、make します。

$ make

その後、README に従って make check を行いましょう。

$ make check

なんか私の環境ではエラーが起きてしまいました(汗)

とりあえずインストールしてみましょう。

$ make install

こちらは無事成功したようです。

$ rbenv versions
  system
  
    :

  fix9367

インストールしたバージョンが一覧に現れました。

$ mkdir ~/tmp
$ cd $_
$ rbenv local fix9367

これで ~/tmp 以下にいるときは fix9367 が使われるようになります。

$ cat .ruby-version
fix9367

試しにバージョンを確認してみると:

$ ruby -v
ruby 2.2.0dev (2014-01-05 trunk 44507) [x86_64-linux]

このあたりの表示は clone してきた時の最新の状態になっているようですね。ソースツリーのどこかのファイルを書き換えたりするとこのバージョン表記も変更できるのかもしれません。