FreeBSD 9.0 - RubyGems libv8 インストール!

Updated:


前回は FreeBSD 8.3 での libv8 のインストールについてお話しました。

今回は FreeBSD 9.0 での libv8 インストールのお話です。 FreeBSD 8.3 での対応方法と同じ方法ではうまくいきません。 少し細工をします。

作業記録

0. 作業環境

  • FreeBSD 9.0 (amd64)
  • Ruby 1.9.3-p194
  • Rails 3.2.3

1. 発生するエラー

libv8 インストール後、therubyracer をインストールしようとして発生したエラーです。(Rails で bundel install しても同じエラーが発生します) libv8 の部分でエラーが発生しているようです。(FreeBSD 8.3 でのエラーと同じです)

# gem install therubyracer
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
        ERROR: Failed to build gem native extension.

  :
  :
  :

g++: /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a: No such file or directory
*** Error code 1

Stop in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.10.1/ext/v8.

Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.10.1 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.10.1/ext/v8/gem_make.out

2. 原因

File: README - Documentation for libv8 (3.3.10.4) にも記載されてますが、元々 libv8 は

  • x86_64-darwin10.7.0
  • x86_64-linux
  • x86-linux

がサポート対象のようです。 そのため、今回の環境(FreeBSD amd64版)では libv8 のインストールは一見成功しているようでも、実は正しくインストールされていないようです。(FreeBSD 8.3 のケースを同じ)

3. 対策

・後に必要となるビルドツール SCons をインストールしておく

# cd /usr/ports/devel/scons
# make install clean

・RubyGems libv8 を普通にインストールする。一見インストールに成功したように見えるはずです。

# gem install libv8

・libv8 を再度手動でビルドするのですが、その前に SConstruct を編集しておきます。(make の Makefile に当たるファイルです) “freebsd” の “CCFLAGS” の部分を以下のように修正します。

# cd /usr/local/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8
# vi SConstruct
'os:freebsd': {
  'CPPPATH' : ['/usr/local/include'],
  'LIBPATH' : ['/usr/local/lib'],
  # 'CCFLAGS':      ['-ansi'],
  'CCFLAGS':      ['-ansi', '-fPIC'],
  'LIBS': ['execinfo']
},

・64ビット版を指定してビルドします。

# scons arch=x64

・正常に終了することを確認します。

4. therubyracer インストール

libv8 がインストールできたら、therubyracer をインストールします。成功するはずです。

# gem install therubyracer

もしくは、rails アプリ側で bundel install しても OK!

参考サイト


これで、FreeBSD 9.0 (amd64) でも最新の Ruby on Rails が使用できるようになりました。 また、今回は FreeBSD 9.0 でしたが、ひょっとしたら 8系でも同様の方法でいけるかもしれません。(未確認) ※ちなみに、i386 版については試していませんしので現時点では詳細は不明です。

以上。





 

Sponsored Link

 

Comments