Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした