#クリスマスにRuby 2.2.0リリース
はい、メリクリメリクリ。
Ruby2.1から恒例のクリスマス行事になったRubyの新バージョンリリース、今年も無事に2.2.0がリリースされましたね。
ということで、ここではおなじみのrbenvとruby-buildを使ってインストールしてみます。
rbenvとruby-buildのインストール
Qiitaにも他にたくさんのエントリーがアップされてるので省略。
まだ入れていない方は、各自の環境にあったエントリーを見つけてインストールしてください。
ruby-buildをアップデート
すでに入れている人はruby-buildのアップデートをしましょう。ruby-buildのディレクトリで
% git pull origin master
と叩いて更新。
% rbenv rehash
してから
% rbenv install -l
でインストール可能バージョンに2.2.0が含まれていることを確認します。
rbenvでruby-2.2.0をインストール
あとは
$ rbenv install 2.2.0
とやればOK。
Ubuntu14.04およびUbuntu14.10の場合
・・・のはずだったのですが、自分の環境(Ubuntu14.04及びUbuntu14.10)では下記のようなエラーが出てビルドに失敗しました。
% rbenv install 2.2.0
Downloading ruby-2.2.0.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/7671e394abfb5d262fbcd3b27a71bf78737c7e9347fa21c39e58b0bb9c4840fc
Installing ruby-2.2.0...
BUILD FAILED (Ubuntu 14.04 using ruby-build 20140524-150-gbe7d096)
Inspect or clean up the working tree at /tmp/ruby-build.20141226005210.7528
Results logged to /tmp/ruby-build.20141226005210.7528.log
Last 10 log lines:
make[1]: *** 未完了のジョブを待っています....
installing default date_core libraries
installing default nkf libraries
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/objspace' から出ます
linking shared-object nkf.so
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/nkf' から出ます
linking shared-object date_core.so
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/date' から出ます
make[1]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0' から出ます
make: *** [build-ext] エラー 2
logの中身を見てみます。
(前略)
linking shared-object objspace.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): 再配置 R_X86_64_32S (`.rodata' に対する) は共有オブジェクト作成時には使用できません。-fPIC を付けて再コンパイルしてください。
./libffi-3.2.1/.libs/libffi.a: error adding symbols: 不正な値です
collect2: error: ld returned 1 exit status
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] エラー 1
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/fiddle' から出ます
make[1]: *** [ext/fiddle/all] エラー 2
make[1]: *** 未完了のジョブを待っています....
installing default date_core libraries
installing default nkf libraries
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/objspace' から出ます
linking shared-object nkf.so
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/nkf' から出ます
linking shared-object date_core.so
make[2]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0/ext/date' から出ます
make[1]: ディレクトリ `/tmp/ruby-build.20141226005210.7528/ruby-2.2.0' から出ます
make: *** [build-ext] エラー 2
どうも libffi というのが怪しそう。
ということで以下のパッケージをインストールしてみました。
% sudo apt-get install libffi-dev
再度インストールを実行。
% rbenv install 2.2.0
今度は正常にインストールされました。
% rbenv versions
...
...
2.2.0
rubyのバージョンを2.2.0に切り替えます。
% rbenv global 2.2.0
% ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
これで最新のruby2.2.0が使えるようになりました。