Syntax Error.

[Sy]【解決】rbenvでCentOS6.5にRuby2.2.1をインストールしたらエラー

2015/03/29

Ruby2.2.x系でタイポが原因でインストールでコケるようになってたみたい。とりあえずこの時は別に2.1.xで問題なかったのでバージョン変えて対応。

問題&対処

CentOS6.5rbenvを使ってRuby2.2.1をインストールしようとしたら、以下のとおりエラーに。

$ rbenv install 2.2.1
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...

BUILD FAILED (CentOS release 6.5 (Final) using ruby-build 20150319zf)

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

Last 10 log lines:
make[3]: Leaving directory `/tmp/ruby-build.20150329172111.4432/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.20150329172111.4432/ruby-2.2.1/ext/fiddle'
make[1]: *** [ext/fiddle/all] Error 2
make[1]: Leaving directory `/tmp/ruby-build.20150329172111.4432/ruby-2.2.1'
make: *** [build-ext] Error 2

エラーメッセージからrbenv /libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad valueの部分を抜粋してググッてみると、以下の記事がヒット。

⇒ Ruby2.2.0のインストールがlibffi.a: could not read symbols: Bad valueで失敗した件 - まっしろけっけ

これを参考にlibffi-develをインストールしてみる。

$ sudo yum install libffi-devel

もう一度。

$ rbenv install 2.2.1
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...

BUILD FAILED (CentOS release 6.5 (Final) using ruby-build 20150319zf)

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

Last 10 log lines:
                            psych 2.0.8
                            rake 10.4.2
                            rdoc 4.2.0
./tool/rbinstall.rb:714:in `rescue in block in <main>': uninitialized constant LoadErroe (NameError)
from ./tool/rbinstall.rb:712:in `block in <main>'
from ./tool/rbinstall.rb:757:in `call'
from ./tool/rbinstall.rb:757:in `block in <main>'
from ./tool/rbinstall.rb:754:in `each'
from ./tool/rbinstall.rb:754:in `<main>'
make: *** [do-install-all] Error 1

さっきと別のエラーが。

エラーメッセージを読んでみると、rbinstall.rbの714行目で落ちてるっぽく、LoadErroe (NameError)となってる。これは。。。LoadErrorをタイポしてる疑惑。

調べてみると、やっぱりその様子。

⇒ rubyコンパイル時にエラー - yokochiの開発メモ

うーん、sassコンパイルしたいだけなので、別に2.2.1じゃなくてもいいから2.1.2にしてリトライ。

$ rbenv install 2.1.2
Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...

BUILD FAILED (CentOS release 6.5 (Final) using ruby-build 20150319zf)

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

Last 10 log lines:
                              rake 10.1.0
                              rdoc 4.1.0
                              test-unit 2.1.2.0
installing rdoc:              /home/vagrant/.rbenv/versions/2.1.2/share/ri/2.1.0/system
installing capi-docs:         /home/vagrant/.rbenv/versions/2.1.2/share/doc/ruby
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
Configure options used:
  --prefix=/home/vagrant/.rbenv/versions/2.1.2
  LDFLAGS=-L/home/vagrant/.rbenv/versions/2.1.2/lib
  CPPFLAGS=-I/home/vagrant/.rbenv/versions/2.1.2/include

さっきのエラーは出なかったけど、openssl-develが必要らしい。

$ sudo yum -y install openssl-devel

openssl-develをインストールして、再度Ruby2.1.2をインストールして解決。