OSX で rbenv を使って ruby 1.9.3-p392 インストール
今日はRuby20周年パーティ開催ですね。おめでとうございます。 残念ながらruby 2.0
的な話題ではなくてruby 1.9.3
の食傷気味のタイトルですが、いろいろと 前回 から変わった点もあるのでまとめ的に。
install openssl and readline
まずはシステムに標準で入ってるOpenSSLは古いので最新のものを。 readlineは腐ってるのでこれも最新のモノを入れます。
$ brew install openssl readline
入れたあとに以下の作業をしておくと環境構築する際にデフォルトで使ってくれるようになるのでお薦めです。
$ brew link openssl
$ brew link readline
これらはアップデートの場合に失敗することがあり、その際には brew -f unlink openssl
という作業が必要になる場合があります。
install rbenv with ruby-build and rbenv-default-gems
これは brew で行います。同時に ruby-build
と rbenv-default-gems
も入れます。
$ brew install rbenv ruby-build rbenv-default-gems
初めて入れたあとは忘れずに使ってるシェルの環境設定ファイルに以下の行を入れて下さい。(標準なら .profile 等 )
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
rbenv-default-gems
上でruby-build
と一緒に入れたrbenv-default-gems
はrbenvでrubyをインストールした際にフォルトで入れるgemを定義しておくことで、インストールする度に必要になる gem install ....
を無くしてくれるものです。是非入れておきましょう。 設定は $HOME/.rbenv/default-gems
を作成するだけです。
以下のような感じで記述します。
bundler
bourbon
compass
foreman
haml
html2haml
rails
redcarpet
pygments.rb
sass
tmuxinator
unicorn
ruby install
以下のコマンドで1.9.3-p392
が表示されることを確認します。
$ rbenv install -l | grep 1.9.3
1.9.3-dev
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-p374
1.9.3-p385
1.9.3-p392
1.9.3-preview1
1.9.3-rc1
さてインストールですが、オプションに--enable-shared
を入れています。これは vim で利用するために 入れています。
$ CONFIGURE_OPTS="--enable-shared" rbenv install 1.9.3-p392
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/d6rkaiz/.rbenv/versions/1.9.3-p392
Downloading ruby-1.9.3-p392.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz
Installing ruby-1.9.3-p392...
BUILD FAILED
Inspect or clean up the working tree at /var/folders/t0/n008mdzj4nz0_cswflz6xwch0000gn/T/ruby-build.20130223143931.52037
Results logged to /var/folders/t0/n008mdzj4nz0_cswflz6xwch0000gn/T/ruby-build.20130223143931.52037.log
Last 10 log lines:
compiling safe.c
compiling signal.c
compiling sprintf.c
compiling st.c
st.c:520:35: error: implicit conversion loses integer precision: 'st_index_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
i = table->num_entries++;
~ ~~~~~~~~~~~~~~~~~~^~
1 error generated.
make: *** [st.o] Error 1
make: *** Waiting for unfinished jobs....
このように何も設定せずに入れると p385 以降エラーが出るようになりましたが、CC=gcc
とすることでこれを回避します。(別途インストール等は必要ありません) この gcc
の実体は llvm-gcc-4.2
です。
CFLAGSで指定する方が安全とのことなので改めました。
$ CFLAGS=-Wno-error=shorten-64-to-32 CONFIGURE_OPTS="--enable-shared" rbenv install 1.9.3-p392
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/d6rkaiz/.rbenv/versions/1.9.3-p392
Downloading ruby-1.9.3-p392.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz
Installing ruby-1.9.3-p392...
Installed ruby-1.9.3-p392 to /Users/d6rkaiz/.rbenv/versions/1.9.3-p392
Fetching: bundler-1.2.4.gem (100%)
Successfully installed bundler-1.2.4
1 gem installed
Fetching: sass-3.2.6.gem (100%)
Fetching: thor-0.17.0.gem (100%)
Fetching: bourbon-3.1.1.gem (100%)
Successfully installed sass-3.2.6
Successfully installed thor-0.17.0
(以下略 ※)
※ インストール完了後にrbenv-default-gems
で定義したGemfile
がインストールされています。
インストール後の確認
インストールの確認には 0.4.0以降に導入された rbenv shell
を使うと一時的にバージョンを変更できるので便利に確認できます。
使い方は rbenv shell <version>
とするだけで、解除は rbenv shell --unset
とするだけです。
$ rbenv shell 1.9.3-p392
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]
$ irb
irb(main):001:0> require 'OpenSSL'
=> true
irb(main):002:0> OpenSSL::OPENSSL_VERSION
=> "OpenSSL 1.0.1e 11 Feb 2013"
irb(main):003:0>
$ rbenv shell --unset
$ ruby -v
ruby 1.9.3p385 (2013-02-06 revision 39114) [x86_64-darwin12.2.1]
2013-02-23 20:13
誤字修正およびgccの項に別途インストール必要がない旨を追記。
2013-02-25 1:28
@nalsh さんに教えていただいてCFLAGSを使う方法へ変更。