結論から申し上げますと,rbenvを適切に導入・更新*1していれば,以下のコマンドで,ビルドとインストールができました.
CONFIGURE_OPTS="--disable-install-doc" rbenv install 2.5.0-dev
ふだん使いのCygwinおよびLinux環境では,これまで,rbenv install 2.4.0-devを実行してインストールやアップデートをしてきました.
だいぶ前より,2.5.0-devに上げたいと思っていたのですが,Cygwinでのビルドに失敗して,躊躇していました.
実行コマンドはrbenv install 2.5.0-devです.昨夜,実行したときには,ログファイルに次の内容が書かれていました.
(パス:一部省略)/ruby-trunk/lib/rdoc/parser/ripper_state_lex.rb:308: [BUG] Segmentation fault at 0x0000000000000001
ここであきらめずに,打開策を探ってみましょう.まずは「ripper_state_lex.rb」というファイル名に,単語を加えて検索すると,バグレポートが見つかりました.
今年10月の報告です.インストールはできたらしいけれど,gem実行時に不具合が生じるとのこと.コアダンプしないようにするオプションも,書かれていました.
そのオプション「--no-ri」に検索語を切り替えて,もう少し探すと,ビルド時,およびgem実行時に,rdocを不要とする方法が見つかりました.
コマンドは「./configure --disable-install-doc」です.先ほどエラーで終了したところのruby-trunkに移動して,念のためmake cleanをしてからこのコマンドを実行し,結果を待っている間,エラーが出るたびにこんなのを実行して,makeとmake installをするのは嬉しくないなと思い,再度,検索しました.良いのがありました.
そこで書かれているコマンドは「CONFIGURE_OPTS="--disable-install-rdoc" rbenv install 2.5.0-dev」です.rbenv install 2.5.0-devを実行しなさい,ただしその実行に限り,環境変数CONFIGURE_OPTSの値は--disable-install-rdocですよ,というものです.
オプションをよく見ると,「--disable-install-rdoc」となっており,先ほどの「--disable-install-doc」と比べて,rがついています.違いは,以下のページに書かれていました.
「--disable-install-rdoc」とすればrdocをインストールしない,「--disable-install-capi」とすればC APIドキュメントをインストールしない,そして「--disable-install-doc」とすると両者をインストールしない,のですね.ふだん使いには,どちらも必要ありません.
そうこうしていると,先ほどのconfigureコマンドが無事に終了していました.なのだけれど,makeすべきではないでしょう.rbenv installのやり直しです.cdでディレクトリを離れてから,再掲になりますがコマンドを実行しました.
CONFIGURE_OPTS="--disable-install-doc" rbenv install 2.5.0-dev
ほどなく,妻から声がかかりました.家の雑用をし,座席に戻ると,エラーなくインストールを終えていました.
簡単に,バージョン2.4と2.5の違いを確認してみました.Dir.children*2を使ってみます.
$ rbenv versions system * 2.4.0-dev (set by /home/takehikom/.rbenv/version) 2.5.0-dev $ ruby -v ruby 2.4.3p205 (2017-12-14 revision 61245) [x86_64-cygwin] $ irb irb(main):001:0> Dir.children("/home") NoMethodError: undefined method `children' for Dir:Class from (irb):1 from /home/takehikom/.rbenv/versions/2.4.0-dev/bin/irb:15:in `<main>' irb(main):002:0> $ rbenv global 2.5.0-dev $ rbenv versions system 2.4.0-dev * 2.5.0-dev (set by /home/takehikom/.rbenv/version) $ ruby -v ruby 2.5.0dev (2017-12-15 trunk 61279) [x86_64-cygwin] $ irb irb(main):001:0> Dir.children("/home") => ["takehikom"] irb(main):002:0>
2.4では「NoMethodError: undefined method `children' for Dir:Class」というエラーが出て,2.5では出ませんでした.とりあえず,思うとおりのことができました.
ドキュメント類は,ひょっとしたら使うかもしれないので,Linux環境では従来どおりのrbenv install 2.5.0-devを使用します.Cygwinでは上記コマンドにするとともに,echo "gem : --no-ri --no-rdoc" >> ~/.gemrcを実行しておき,gemでドキュメントをインストールしないようにしました.