gccとかlibv8とかtherubyracerとかのinstallでハマった
よっし、忘れないうちに前回のエントリの続きを書いていきます!
YosemiteにOSをupdateしてから、bundle installが出来なくなったので、
エラー内容からgccのバージョンアップを行いました。
gccのバージョンアップ方法は、以下のとおりです。
$ brew tap homebrew/versions $ brew install gcc49
homebrewを使いました。
まずは、homebrew/versionsをtapしてきて、
その中にある最新のgcc(現時点では4.9系)をinstallします。
参考: Homebrew/homebrew-versions · GitHub
デフォルトでは、gccは/usr/bin/にありますが、
新しくinstallしたgccのシムリンクを/usr/local/bin/に貼ると安心です。
$ which gcc /usr/bin/gcc $ ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc $ ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++ $ which gcc /usr/local/bin/gcc $ gcc --version gcc (Homebrew gcc49 4.9.1) 4.9.1 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
こんな感じの結果が得られると思います。
このあとにbundle installをすると、
~~~~(略)~~~~ checking for main() in -lpthread... yes checking for main() in -lobjc... yes checking for v8.h... no *** extconf.rb failed *** ~~~~(略)~~~~
今度はv8がないよ!というエラーが出ました。
システムに既にインストールされているv8をbundlerが読むように設定しました。
$ bundle config build.libv8 --with-system-v8
しかし、このあとにまたbundle installをすると、
今度はtherubyracerがインストールできないよと怒られます。
色々調べみた結果、localの中に2つのバージョンのlibv8が存在していることに気づきました。
libv8をアンインストールしてから、v8をインストール、
そのあとにtherubyracerをインストールすることでbundle installが成功しました。
$ gem uninstall libv8 $ brew install v8 $ gem install therubyracer
v8はjsの実行エンジンなのですが、
それをrubyから使っちゃおうぜというのがtherubyracerだそうです。
環境に応じて必要なv8を提供してくれるのがlibv8です。
やー、べんきょうになりました。