#更新:readline 6.3.5以上でpatchなしインストールが可能になったようです
Homebrewの場合は5/10に6.3.5になりました。
readline 6.3.5 · d62a6cf · Homebrew/homebrew
Ruby 2.1.1 を rbenv で入れようとするとビルドがコケる。
brew な readline が 6.3.3 にいつの間にか上がってて、それだとマズいらしい。
と思ったら brew 側の readline が 6.3.5 に上がってた。
のと、Rubyも2.1.2 が出てた。
なんか素直に2.1.1も2.1.2も入った。
atton.blog: rbenv と readline でゴニョゴニョした話
ということでこの記事は古くなりました。
ご利用ありがとうございました。
##'14/6/24追記:コンパイラがgccだとインストールに失敗するそうです
Rubyのインストール時にはLLVMベースのコンパイラ(llvm-gcc-4.2 or clang)を使う必要があるようで、僕の環境ではgcc 4.7.3がデフォルトに設定されていました。
Mavericksのデフォルトではgccはclangにエイリアスされているため、大方の人はここではつまづかないであろうと思われます
Macでrbenv install 2.x.xに失敗する - Qiita
(以下は元の記事)
##はじめに
readline 6.3.3でもRuby 2.1.1がインストールできたのでその情報をアップしておきます。
(追記:2.0.0-p451でもインストールできるpatchを作りました。またそのpatchは2.0.0の他のバージョンでもOKでした。)
##いつ頃から影響が出ているか
(日本時間)
MacのhomebrewだとreadlineのFormulaが'14/4/14に6.2.4から6.3.3に更新されました。
GNUのbug-readline MLでは[Bug-readline] Readline-6.3 Official Patch 3が'14/4/1に出ています。
readlineのせいでRubyがうまくインストールできない、という記載は4月半ばぐらいから出てきています。
##Ruby 2.1.1インストール
次のように、patchを当ててインストールすれば問題ありません。
OpenSSLもインストールするようにしています。
curl -sSL https://gist.github.com/mislav/a18b9d7f0dc5b9efc162.txt | env CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install --patch 2.1.1
(多分そんなひとは少ないと思いますが)OpenSSLが不要であれば
--with-openssl-dir=`brew --prefix openssl`
オプションを削ってください。
またviを使うとかQtを使いたいとかいうことで--enable-sharedにしておきたい場合(私ですがw)には
curl -sSL https://gist.github.com/mislav/a18b9d7f0dc5b9efc162.txt | env CONFIGURE_OPTS="--enable-shared --with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install -f --patch 2.1.1
とすれば大丈夫です。ちなみに、Rubyを上書きしたいので-fオプションも入れています。
##Ruby 2.0.0インストール
いまのところ、どこにもpatchが無いので直ぐにはできません。
(なんとかしてpatchを作ってみたいとも思ってますが)
現状ではreadlineを6.2.4にしてからインストールしてください。
Ruby 2.0.0用のpatchできました^^ このpatchはMacに限らず汎用になると思います(未確認ですが)。2.0.0-p451/p353/p247/p195/p0全てで使えました。
冒頭のreadlineとOpenSSLを使ってのインストールの場合は
curl -sSL https://gist.github.com/riocampos/b2669b26016207224f06.txt | env CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install --patch 2.0.0-p451
でいけます。
--enable-sharedオプションを付けたい場合に関しては省略しておきます。同じ手順で問題なくインストールできます。
##Ruby 1.9.3のインストールは
readline 6.3.3でもpatchを当てずにインストール可能です。
##インストールが失敗する原因
原因は
Readline patch ported from Ruby trunk to help 2.1.1 compile on Arch linux
に記載されていますが
rl_hook_func_t is available since readline-4.2 (2001).
Function is removed at readline-6.3 (2014).
However, editline (NetBSD 6.1.3, 2014) doesn't have rl_hook_func_t.
6.3以降で削除されてしまったためです。
##お断り
基本的にはMac(Mavericks 10.9.2)でhomebrew/rbenvを使っている環境です。当初はMacユーザ向けに書いていたのですが、書いているうちに環境依存性が薄れてきました。
ので、readline 6.3とRuby 2.x.xとの関連ということでエントリします(タイトルが度々変わってしまい申し訳ないです)。
##参考エントリ
- MacでRuby 2.x.xがインストールできないバグ (homebrew + rbenv) - Qiita
- OSX Mavericks にhomebrew + rbenvでruby 2.1.1インストール (2014/04/18) - Qiita
- archLinux - rbenv installで失敗する問題を解消 on Arch Linux - Qiita
- UbuntuServer - Ubuntu 14.04にrbenvでruby2.1.1入れようとして怒られた - Qiita
##おまけ