84

Mavericks に次の gem バージョンをインストールしようとしています

  • libv8 (3.16.14.3)
  • therubyracer (0.12.1)

明らかに、therubyracer gem は libv8 に依存しています。

1) libv8 のインストール

libv8とは何ですか? 私のちょっとした調査は、それが Google Chrome で使用されるある種の JavaScript ライブラリであることを示しているようです。

インストールに問題がありましたが、この素晴らしい投稿には、エラーと、それを回避する方法に関する十分に説明された回答の両方が含まれていました.

だから私libv8

gem install libv8 -- --with-system-v8

これによりgemがインストールされますが、代わりにv8ライブラリのローカルシステムインストールが使用されることを理解しています...gemに付属のバージョンですか?いずれにせよ、それは成功しました。

2) ルビレーサーのインストール

次のステップで、therubyracergem のインストールに問題がありました。この宝石が何をするのかよくわかりませんが、私がしようとしている Rails プロジェクトの依存関係であることだけですbundle install

次のエラーが表示されます。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --without-objclib
    --enable-debug
    --disable-debug
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include=${v8-dir}/include
    --with-v8-lib
    --without-v8-lib=${v8-dir}/lib
/Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in 
'configure': You have chosen to use the version of V8 found 
on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundled with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location

thanks,
The Mgmt

    from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
    from extconf.rb:32:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection.
Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

収集できる情報から、libv8で提供されているものではなく、ローカルの V8 ライブラリを使用してインストールすることを選択しましlibv8たが、ローカル インストールが見つからなくなりました。

  • V8 が実際にインストールされているかどうかを確認するにはどうすればよいですか? また、その場所を特定するにはどうすればよいですか?
  • 指定されたフラグをいくつか試してみましたが、どれも gem が正しいインストール ディレクトリを指しているようには見えませんでした
  • これは別のトピックかもしれませんが、何extconf.rbですか? 数カ所で見かけました。gccそして、具体的にコンパイラで何をしようとしていますか?

ありがとう!!

編集:

  1. libv8をアンインストールして再インストールするこのソリューションを試しましbrew installた. いくつかの同様の質問でも言及されていました。運がない。

  2. ここCCで説明されているように、 、CXX、およびCPP環境変数も試しましたが、コンパイラが既にピックアップされているため、効果はないと思います。gcc v4.6

4

15 に答える 15

167

この手順はうまくいきました。

OS: マーベリック ルビー: 2.1.1

gem uninstall libv8
gem install therubyracer -v '0.11.3'
gem install libv8 -v '3.11.8.13' -- --with-system-v8
于 2014-09-04T07:40:54.627 に答える
75

OS X El Capitan でこの問題に直面している人にとって、therubyracer の問題スレッドからのこの解決策は、最終的に私にとってうまくいったものでした:

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

私もbrew install gcc以前に走ったことがありますが、これが実際に必要かどうかはわかりません。

于 2016-03-28T21:33:15.483 に答える
24

githubに投稿されたTertomのソリューションは、それぞれのgithubの問題とここで提案された他のすべてのソリューションを試した後、私のためにそれを解決しました。
私はまったく同じシステム構成を持っていました。
これは el capitan にあるため、質問に対する正確な回答ではありませんが、この情報が役立つ場合があります。

可視性のためにここで引用しています:

同じ問題を解決しました

  • macOS 10.11.2
  • ルビー1.9.3
  • libv8 3.16.14.13
  • therubyracer 0.12.2

--

brew tap homebrew/versions  
brew install v8-315  
brew link --force v8-315  
bundle install  
brew unlink v8-315

libv8もインストールできない場合は、

gem install libv8 --with-system-v8

また

bundle config build.libv8 --with-system-v8
于 2016-01-22T22:02:38.420 に答える
6

上記の答えは私にはうまくいきませんでした。私のバンドラー構成がdisable-shared-gems有効になっているため、追加の問題が発生します。

Yosemite 10.10.1、Rails 3.2.x、および Ruby 1.9.3p550 を使用しています。

私の次のスニペットは、私bin/setupの問題を修正しました。

if ! bundle show therubyracer; then
    bundle config build.libv8 --with-system-v8
    gem install --install-dir vendor/bundle libv8 -v 3.16.14.7
    gem install libv8 -v 3.16.14.7
    gem install --install-dir vendor/bundle therubyracer 
fi
于 2014-12-18T12:00:29.397 に答える
4

上記の問題の回避策を見つけました。

これは、libv8 と therubyracer の間の互換性です。

gem install libv8 -v '3.3.10.4' -- --with-system-v8

gem install therubyracer -v '0.10.2'

両方のバージョンが私と互換性があるので、これはうまくいくはずです。最初に、therubyracer のバージョン 0.12.0 をインストールしようとして、問題に直面していました。バージョン 0.10.2 に切り替えると、すべて正常に動作しました。

現在のOS:マーベリックス

于 2014-08-26T07:09:00.550 に答える
1

ほぼ2日間頭を壊した後、これはうまくいきました。

rvm install 2.2.2
gem install rails
bundle install
于 2015-10-09T18:34:17.040 に答える