読者です 読者をやめる 読者になる 読者になる

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の最新版をインストールする