Rubyを2.2.1にバージョンアップする時のエラーに対処

Shunsuke Sawada

なんだかRubyのバージョンアップに手間取ってしまった。
全体の流れはこちら ↓ を参照。

rbenv / Ruby / Ruby on Rails アップグレードの手順 | Workabroad.jp
  

1
rbenv install 2.2.1

としたところで、こんなエラー。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Installing ruby-2.2.1...

BUILD FAILED (CentOS release 6.4 (Final) using ruby-build 20130901-461-g7f3cc01)

Inspect or clean up the working tree at /tmp/ruby-build.20150315081134.17206
Results logged to /tmp/ruby-build.20150315081134.17206.log

Last 10 log lines:
make[3]: Leaving directory `/tmp/ruby-build.20150315081134.17206/ruby-2.2.1/ext/fiddle/libffi-3.2.1'
linking shared-object fiddle.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32 against `.text' can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] Error 1
make[2]: Leaving directory `/tmp/ruby-build.20150315081134.17206/ruby-2.2.1/ext/fiddle'
make[1]: *** [ext/fiddle/all] Error 2
make[1]: Leaving directory `/tmp/ruby-build.20150315081134.17206/ruby-2.2.1'
make: *** [build-ext] Error 2

対処

こちらのトラブルシューティングに沿って対処してみた。
CentOS 6.4です。

Home · sstephenson/ruby-build Wiki
  
必要なライブラリをインストール

1
sudo yum install -y gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel

既にインストールしていて2.2.1に上げる場合、これが抜けてる可能性もある。

1
sudo yum install libffi-devel

  
そして自分の場合はこれが原因だった。

No space left on device
Some distributions will mount a tmpfs partition with low disk space to /tmp, such as 250 MB.

1
2
mount | grep tmp
df -h | grep tmp

とするとわかるけど、

1
tmpfs                 230M     0  230M   0% /dev/shm

  
265 MB必要なのに、230MBしか割り当てられてない。
なので、こんな感じでマウントしなおしました。

1
sudo mount -o remount,size=300M,noatime /dev/shm

  
これで大丈夫なはず。

1
2
3
4
5
6
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 /home/vagrant/.rbenv/versions/2.2.1

  

Railsのインストール

せっかくRubyのバージョンを上げたんだし、
Railsも最新版にしとくかと思ったらここでもエラー発生。

Nokogiriのビルドに失敗します。

こんな感じで解決です。

1
2
3
4
sudo yum -y install libxml2 libxslt libxml2-devel libxslt-devel
gem install nokogiri -- --use-system-libraries

gem install --no-ri --no-rdoc rails
5
Shunsuke Sawada

おすすめの記事

acts-as-taggable-on タグを表示させる順番を決めたい
Railsを4.2にバージョンアップしたら、Vagrantのローカル開発環境にアクセスできなくなった問題
Railsのバリデーションエラー後にレイアウトが崩れるとき