LoginSignup
73
75

More than 5 years have passed since last update.

rbenvでMacにRuby 2.2.1 インストール(オプション指定最新版

Last updated at Posted at 2014-12-25

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です。
参考:

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 が必要なのに存在しないのでエラーになってます。
(解決方法探さなきゃなぁ…

73
75
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
73
75