Ruby
Mac
homebrew
rbenv

MacでRuby 2.x.xがインストールできないバグ (homebrew + rbenv)

More than 3 years have passed since last update.

追記(2014/6/25)

homebrewのreadlineが6.3.5に更新され、Ruby 2.xでも問題なくインストールできる状態となったそうです。(thanks to:masawadaさん)

この記事はrubyが2.1.1、homebrewのreadlineが6.3.3時点の情報であり、おそらくもう必要のない過去のものになってるかと思われます。
(何も調べてないので分かりません。)

この記事は残しますが、Rubyのインストール時にエラーが発生した場合は別の原因であると思われます。

この記事を参考に、readlineを過去のものに戻して使ってた人へ

さっそくbrew updateしてみたところエラーが出ました。

readlineの過去のバージョンを使用するために、Formulaをgit checkoutで過去のものにしたのが原因です。
以下の記事を参考に、正常にubgradeできるように戻せます。

ヾ(o゚ω゚o)ノ゙brew updateでエラーでたった[Homebrew] - Qiita

前書き

Rubyを「Homebrewでopensslとreadlineを入れて、rbenvで管理してる人」限定かもしれません。
そうではないかもしれませんし、Mac限定でもないのかもしれませんが、私の環境はそんな感じです。
homebrewでは普通にruby 2.1.1をインストールできましたが、rbenvでは何度試してもインストールできませんでした。
つい一週間ほど前は、普通にインストールできてました。

rbenv install 2.1.1とかすると

Downloading ruby-2.1.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e57fdbb8ed56e70c43f39c79da1654b2
Installing ruby-2.1.1...

BUILD FAILED

Inspect or clean up the working tree at /var/folders/_0/zkqz91qx18d3849bmjzhk5jh0000gn/T/ruby-build.20140416205643.91789
Results logged to /var/folders/_0/zkqz91qx18d3849bmjzhk5jh0000gn/T/ruby-build.20140416205643.91789.log

Last 10 log lines:
compiling ossl_x509crl.c
compiling ossl_x509ext.c
compiling ossl_x509name.c
compiling ossl_x509req.c
compiling ossl_x509revoked.c
compiling ossl_x509store.c
installing default openssl libraries
linking shared-object openssl.bundle
linking shared-object ripper.bundle
make: *** [build-ext] Error 2

って出てインストールできません。
んで、その真ん中に書いてあるログファイルを見てみるとreadline関連のエラーっぽい。

$ cat /var/folders/_0/zkqz91qx18d3849bmjzhk5jh0000gn/T/ruby-build.20140416205643.91789.log | grep "^make\["
make[1]: Nothing to be done for `srcs'.
make[2]: Nothing to be done for `all'.
make[2]: Nothing to be done for `all'.
make[2]: Nothing to be done for `all'.
make[2]: *** [readline.o] Error 1
make[1]: *** [ext/readline/all] Error 2
make[1]: *** Waiting for unfinished jobs....

原因

2日前にHomebrewのreadlineがアップデートされていて、その影響でした。
Building Ruby 2.x on OS X Mavericks Suddenly Fails · Issue #550 · sstephenson/ruby-build

前のバージョン(6.2.4)では動くけど、現在のバージョン(6.3.3)では動かないとかなんとか。

解決方法

とりあえずインストールしたい場合、homebrewのreadlineを最新のもの(6.3.3)から過去のバージョン(6.2.4)にします。

またはパッチを当てれば6.3.3のままでもインストールできるそうです。以下を参照。
Ruby 2.1.1 / 2.0.0-p451をreadline 6.3の環境でもインストールするには - Qiita

6.2.4からアップグレードした場合

6.2.4から6.3.3へアップグレードした場合、切り替えるだけで済むみたいです。(thanks: @urimaro さん)

brew switch readline 6.2.4

6.2.4がインストールされてない場合

クリーンインストールした直後等、6.3.3しかインストールしてない場合は6.2.4をインストールします。
参考: Mac - homebrewでバージョンを指定してインストールする - Qiita

まず、過去のバージョンを調べます。(Warning出るけどとりあえず気にしない)

$ brew versions readline
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
6.3.3    git checkout 1294240 Library/Formula/readline.rb
6.2.4    git checkout 0181c8a Library/Formula/readline.rb

過去のバージョンでインストールし直し。

cd /usr/local/
git checkout 0181c8a Library/Formula/readline.rb

brew install readline

あとは普通にrbenvでRubyをインストールできます。

rbenv install 2.1.1

蛇足

ググれどもググれども「CONFIGURE_OPTSを設定すれば出来る」的な記事しか出てきませんでした。
2日前からの問題だったので当たり前なんですが。

こんなんで何時間も溶けて激おこスティックファイナリアリティぷんぷんドリームなんですけど、この記事を見た人は激おこプンプン丸程度で済むことを祈ってます。

どこか間違ってるかもしれないけど、もう疲れたしインストールできたからいいや。