Rails 4 で libv8, therubyracer のインストールにエラー発生
Rails 4 のチュートリアルを読んでいて、 libv8, therubyracer のインストール中にエラーが発生した。
実行環境は Ubuntu 12.04 LTS。
そもそも、チュートリアルの 1.2.5章で、javascript ランタイムがないから rails server がコケるという問題が前置きです。
gem install libv8 -v '3.16.14.7'
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/home/ryu/.rvm/rubies/ruby-2.0.0-p598/bin/ruby -r ./siteconf20141212-26865-flicop.rb extconf.rb
creating Makefile
Compiling v8 for ia32
Using python 2.7.3
Using compiler: /usr/bin/c++ (GCC version 4.6)
/home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7/ext/libv8/builder.rb:28:in `make_flags': undefined method `include?' for nil:NilClass (NoMethodError)
from /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7/ext/libv8/builder.rb:56:in `block in build_libv8!'
from /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7/ext/libv8/builder.rb:49:in `chdir'
from /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7/ext/libv8/builder.rb:49:in `build_libv8!'
from /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7/ext/libv8/location.rb:24:in `install!'
from extconf.rb:7:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/gems/libv8-3.16.14.7 for inspection.
Results logged to /home/ryu/.rvm/gems/ruby-2.0.0-p598@railstutorial_rails_4_0/extensions/x86-linux/2.0.0/libv8-3.16.14.7/gem_make.out
An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue.
Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.
調べてみると、どうやら gcc,g++ のバージョンが低い事が問題らしい。
なので、バージョン 4.9 にアップグレードする。
以下アップグレード手順
1. ppa 登録
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2. gcc,g++ インストール
$ sudo apt-get update; sudo apt-get install gcc-4.9 g++-4.9
3. gcc,g++ コマンドのバージョンアップ
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
4. テスト
$ gcc --version $ g++ --version
バージョンが 4.9.2 になっていれば成功。(執筆時点)
そして再び、therubyracer と libv8 を gem でインストールすれば OK です。
rails server も無事起動しました。
しかし、チュートリアルなのにエラーの難易度が初学者が学ぶには高い気がする笑
参考 URI
Can't compile with gcc-4.9 on OSX · Issue #140 · cowboyd/libv8 · GitHub
金星☆ちゃんねる: C++11のためにGCCの最新版をインストールする