LoginSignup
90

More than 5 years have passed since last update.

Ruby 2.2.0をrbenvとruby-buildでインストール

Last updated at Posted at 2014-12-25

クリスマスに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が使えるようになりました。

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
90