Ruby 2.1.1 / 2.0.0をreadline 6.3の環境でもインストールするには

#更新：readline 6.3.5以上でpatchなしインストールが可能になったようです
Homebrewの場合は5/10に6.3.5になりました。
[readline 6.3.5 · d62a6cf · Homebrew/homebrew](https://github.com/Homebrew/homebrew/commit/d62a6cf17f21acfa73d69828dd500f4ee0ada2a0)
>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 でゴニョゴニョした話](http://attonblog.blogspot.jp/2014/05/rbenv-readline.html)

ということでこの記事は古くなりました。
ご利用ありがとうございました。
##'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](http://qiita.com/xxthermidorxx/items/04bc06f444c38be6ffdd)


（以下は元の記事）
##はじめに
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](http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00057.html)が'14/4/1に出ています。
readlineのせいでRubyがうまくインストールできない、という記載は4月半ばぐらいから出てきています。

##Ruby 2.1.1インストール
次のように、patchを当ててインストールすれば問題ありません。
OpenSSLもインストールするようにしています。

```bash
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）には

```bash
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インストール
<del>いまのところ、どこにもpatchが無いので直ぐにはできません。
（なんとかしてpatchを作ってみたいとも思ってますが）
現状ではreadlineを6.2.4にしてからインストールしてください。</del>
Ruby 2.0.0用のpatchできました^^ このpatchはMacに限らず汎用になると思います（未確認ですが）。2.0.0-p451/p353/p247/p195/p0全てで使えました。
冒頭のreadlineとOpenSSLを使ってのインストールの場合は

```bash
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](https://gist.github.com/mislav/a18b9d7f0dc5b9efc162)
に記載されていますが

```
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](http://qiita.com/manuluu/items/85c42e2ddd03c4832c28)
- [OSX Mavericks にhomebrew + rbenvでruby 2.1.1インストール (2014/04/18) - Qiita](http://qiita.com/taketon_/items/99fab69bc847da7de795)
- [archLinux - rbenv installで失敗する問題を解消 on Arch Linux - Qiita](http://qiita.com/xorphitus/items/5ccd93d9dab30363d722)
- [UbuntuServer - Ubuntu 14.04にrbenvでruby2.1.1入れようとして怒られた - Qiita](http://qiita.com/A-gen/items/1a6d43288e95bd708d03)

##おまけ
- [（homebrewで）readlineを6.3.3にするとreadlineを使ったRuby 2.x.xのインストールで失敗する（'14/4/14以降） - 別館 子子子子子子（ねこのここねこ）](http://d.hatena.ne.jp/riocampos+tech/20140424/how_to_install_ruby_2xx_with_readline_633)