Rubyを2.2.1にバージョンアップする時のエラーに対処
なんだか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