1.9.3をインストールした頃とオプションが変わってきたので、自分用メモ書きを兼ねてアップします。
環境は Mavericks 10.9.5 です。
ruby-build 更新
まずインストールする前に、何らかの方法で ruby-build を更新してください。更新しないと rbenv install 2.2.1
できませんので。
Homebrew を使ってインストールしている場合
brew update ruby-build
brew upgrade ruby-build
で良いでしょう。
git を使ってインストールしている場合
ruby-build を git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
でインストールしている場合には、 rbenv-update プラグインを入れておくと良いですね。入れておけば rbenv update
だけで ruby-build を更新できます。
git clone https://github.com/rkh/rbenv-update.git ~/.rbenv/plugins/rbenv-update
でインストール。
参考:rbenv使うならこれもいれとけプラグイン4選 - Code Life
上記参考リンクに挙がっているプラグイン4つを改めてリスト
- ruby-build(当然w)
- rbenv-update
- rbenv-default-gems
- rbenv-gem-rehash
これらは入れておくと便利です。ただ、この Pull Request で rbenv-gem-rehash プラグインが不要になったとの投稿もみました(状況未確認)。
私としては、これらに加えて、パッチバージョン違いでも共通 gem を使ってくれる
- rbenv-communal-gems
も追加したいところです。(参考:rbenv-communal-gemsインストール(トラブル含) - 別館 子子子子子子(ねこのここねこ))
anyenv を使ってインストールしている場合
私の環境では anyenv を使ってスクリプト管理をしています。さらに anyenv-update プラグインを入れて更新可能にしています。ので anyenv update
のみでOKです。
参考:
- anyenvという**env系の簡易マネージャを作った - As a Futurist...
- anyenvやrbenvのpluginsの更新などをしやすくするプラグインを作った - @znz blog
- anyenvをインストール&Homebrewでインストール済のrbenvと互換を取る - 別館 子子子子子子(ねこのここねこ)
- anyenvをインストール2 - 別館 子子子子子子(ねこのここねこ)
- anyenvをインストール3(gemの調子が悪くなった - 別館 子子子子子子(ねこのここねこ)
CONFIGURE_OPTS(RUBY_CONFIGURE_OPTS)オプションについて
不要になったオプション
--with-openssl-dir
1.9.3までであれば CONFIGURE_OPTS(または RUBY_CONFIGURE_OPTS) に OpenSSL 関連のファイルの場所などを設定してやらないと Homebrew で入れた OpenSSL を見てくれなかったのですが、2.0.0以降は ruby-build 側で自動的に見てくれる設定が含まれたので 指定不要になりました 。
--with-readline-dir
pry や irb で日本語などを表示させるために必要だった readline 関係の設定も、2013年12月以降は 不要になりました 。 Homebrew でインストールした readline を自動的に見てくれます。
(参考:Auto-detect and link to Homebrew's readline · 94c15a5 · sstephenson/ruby-build)
##おすすめオプション
--disable-install-rdoc
rdoc のインストールを省略します。インストールがかなり早くなります。
参考:
--enable-shared
ダイナミックリンクを作りたい場合。
--enable-sharedというのはrubyコマンドのほとんどをダイナミック リンクライブラリ(libruby.so)として外に出すオプションだ。 必須でないプラットホームでも --enable-shared を付けておくと eruby や mod_ruby を作るときにダイナミックリンクになるので 便利である (でなければスタティックリンクになる)。
rubyビルドガイド
以前に qtbindings gem をインストールしたときに必要だったので、それ以降はこのオプションを付けています。
個人的なおすすめオプション設定を付けてインストールしてみる
$ CONFIGURE_OPTS="--disable-install-rdoc --enable-shared" rbenv install 2.2.1
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...
Installed ruby-2.2.1 to /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.1
Communized gems for 2.2.1
--disable-install-rdoc を使っているのでインストールが早いです。
anyenv を使っていますのでインストール先が rbenv 単独の場合と異なります。
rbenv-communal-gems プラグインを使っているので末尾に Communized gems for 2.2.1
と表示されています。
バージョン確認
$ rbenv global 2.2.1
$ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin13]
OpenSSL 動作確認
$ pry
[1] pry(main)> require 'openssl'
=> true
[2] pry(main)> OpenSSL::OPENSSL_VERSION
=> "OpenSSL 1.0.2 22 Jan 2015"
Homebrew でインストールした 1.0.2 が使われています。
readline 動作確認
[3] pry(main)> Readline::VERSION
=> "6.3"
[4] pry(main)> "日本語にほんご"[-4..-1]
=> "にほんご"
こちらも Homebrew でインストールした 6.3(6.3.8)が使われています。
#補足:rbenv-communal-gemsを使っている場合の注意事項
2.2.1を入れたからといって、古い2.2.0をすぐ削除すると、 gem に不具合が出ます(そのうちくわしく調べなきゃいけない…)。
$ rbenv uninstall 2.2.0
rbenv: remove /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.0? y
$ pry
/Users/riocampos/.anyenv/envs/rbenv/libexec/rbenv-exec: /Users/riocampos/.anyenv/envs/rbenv/gems/2.2.0/bin/pry: /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.0/bin/ruby: bad interpreter: No such file or directory
/Users/riocampos/.anyenv/envs/rbenv/libexec/rbenv-exec: line 47: /Users/riocampos/.anyenv/envs/rbenv/gems/2.2.0/bin/pry: Undefined error: 0
pry のバイナリが Ruby 2.2.0 のバイナリを呼んでるのでエラーになってますorz( rbenv-communal-gems はそのあたり解決してくれないのか…
仕方ないので pry
を一旦削除して入れ直してみます。
$ gem uninstall pry pry-doc
Successfully uninstalled pry-doc-0.6.0
Remove executables:
pry
in addition to the gem? [Yn] y
Removing pry
Successfully uninstalled pry-0.10.1
$ gem install pry pry-doc
Fetching: pry-0.10.1.gem (100%)
Successfully installed pry-0.10.1
Fetching: pry-doc-0.6.0.gem (100%)
Successfully installed pry-doc-0.6.0
2 gems installed
pry
インストール出来ました。2.2.0で入れた twitter gem でも試しに呼んでみましょう。
$ pry
[1] pry(main)> require 'twitter'
LoadError: dlopen(/Users/riocampos/.anyenv/envs/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.bundle, 9): Library not loaded: /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.0/lib/libruby.2.2.0.dylib
Referenced from: /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.bundle
Reason: image not found - /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/http_parser.rb-0.6.0/lib/ruby_http_parser.bundle
from /Users/riocampos/.anyenv/envs/rbenv/versions/2.2.1/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
こちらでも Ruby 2.2.0 のときの libruby.2.2.0.dylib が必要なのに存在しないのでエラーになってます。
(解決方法探さなきゃなぁ…