mo-fu note

研究からキックボクシングまで何でも書いていきます!

【解決しました】rbenv + ruby-build で ruby2.3.0-preview2 がインストール出来ない問題

Pepabo Advent Calendar 2015 の12日目の記事です。RubyKaigi2015中にrbenv と ruby-build を使ってruby2.3.0-preview2をインストールすることが出来なかったのでメモしておきます。(現在は解決済)

ruby2.3.0-preview2をインストール出来なかった

Ruby 2.3.0-preview2 リリース Ruby2.3.0-preview2 がリリースされた! rbenvでインストールしよう。 rbenv install を実行。

rbenv install ruby2.3.0-preview2

以下のようなエラーが出てしまいました...。

generating x86_64-darwin14-fake.rb
./tool/generic_erb.rb:2:in `require': cannot load such file -- erb (LoadError)
    from ./tool/generic_erb.rb:2:in `<main>'
clang: error: unable to execute command: Broken pipe: 13
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to http://developer.apple.com/bugreporter/ and include the crash backtrace, preprocessed source, and associated run script.
clang: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /var/folders/z9/qwxvvs813d7c8p_vb3bjzy9m0000gn/T/version-0ebce7.c
clang: note: diagnostic msg: /var/folders/z9/qwxvvs813d7c8p_vb3bjzy9m0000gn/T/version-0ebce7.sh
clang: note: diagnostic msg: 

********************
make: *** [x86_64-darwin14-fake.rb] Error 1

困ったのでgistに貼ってレポート

hsbtさんやRubyコミッターの方々が色々と原因を調査してくれました。

bugs.ruby-lang.org

問題だったこと

PATHに::のようなカレントディレクトリが入っている時に、 rbenvはsystemのrubyを使おうとして、ビルドに失敗するようでした。 自分の場合はsystemのruby

ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]

でした。

rbenvでPATHに : が入ってしまう問題

rbenvには以下のPull Requestで修正が加えられています。 この修正がマージされるまではrbenvのglobalを2.2.3等に変更してからrbenv installを実行すればインストール出来るようでした。 (自分はこの時点でもビルドがこけていて何でだろと不思議に思っていた...)

github.com

PATHにカレントディレクトリが含まれるのはセキュリティ的に問題があるので、 上記の変更が取り込まれたrbenvの最新版を使うようにしましょう。

自分はなぜカレントディレクトリがPATHに入っていたのか?

rbenvの: がPATHに入ってしまう問題が解決されたし、自分は元々設定でカレントディレクトリをPATHに入れる事はしていないはず...何でビルドできないのか?と色々調査した結果、phpbrew.phpbrew/bashrc を読み込んだ時にPATHに :: が入ってしまっていました...。

github.com

修正してPull Requestを送ったところ、すぐに取り込んでもらえました。

最後になりますが、RubyKaigi2015楽しかったですね、発表者・参加者・スタッフのみなさま、おつかれさまでした!