【解決しました】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
rbenv install 2.3.0-preview2 失敗
https://t.co/Ix0XUaxwpo
— Yuta Kurotaki (@kurotaky) December 11, 2015
困ったのでgistに貼ってレポート
@kurotaky それ、ちらほら見かけるやつなので確実に直したい。後で少し見せて。
— SHIBATA Hiroshi (@hsbt) December 11, 2015
hsbtさんやRubyコミッターの方々が色々と原因を調査してくれました。
問題だったこと
PATHに::
のようなカレントディレクトリが入っている時に、
rbenvはsystemのrubyを使おうとして、ビルドに失敗するようでした。
自分の場合はsystemのrubyは
ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
でした。
@kosaki55tea @n0kada PATHのなかで空の要素はカレントディレクトリとPOSIX で定義されてる。
— Tanaka Akira (@tanaka_akr) December 13, 2015
rbenvでPATHに :
が入ってしまう問題
rbenvには以下のPull Requestで修正が加えられています。
この修正がマージされるまではrbenvのglobalを2.2.3等に変更してからrbenv install
を実行すればインストール出来るようでした。
(自分はこの時点でもビルドがこけていて何でだろと不思議に思っていた...)
PATHにカレントディレクトリが含まれるのはセキュリティ的に問題があるので、 上記の変更が取り込まれたrbenvの最新版を使うようにしましょう。
まぁrbenvのバグは普通にsecurity issueなのでみんな即座に上げるべき
— なかだ の (@n0kada) December 13, 2015
自分はなぜカレントディレクトリがPATHに入っていたのか?
rbenvの:
がPATHに入ってしまう問題が解決されたし、自分は元々設定でカレントディレクトリをPATHに入れる事はしていないはず...何でビルドできないのか?と色々調査した結果、phpbrew で .phpbrew/bashrc
を読み込んだ時にPATHに ::
が入ってしまっていました...。
修正してPull Requestを送ったところ、すぐに取り込んでもらえました。
最後になりますが、RubyKaigi2015楽しかったですね、発表者・参加者・スタッフのみなさま、おつかれさまでした!