70

仕事に就くのに少しでもお役に立てれば幸いgem install therubyracerです。エラーは次のとおりです。

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

        /Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
*** 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/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
    --with-objclib
    --without-objclib
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)

エラーが発生する前に実行したいくつかの注目すべき手順を次に示します。彼らはうまくいきました:

$ gem install libv8
$ brew install v8

私の環境は次のとおりです。

  • Mac OS X ライオン 10.7.4
  • ruby 1.9.3p194 (2012-04-20 リビジョン 35410) [x86_64-darwin11.4.0] (rvm 経由)
  • V8 バージョン 3.9.24 (自作経由)
4

11 に答える 11

106

これは私のために働いた:

$ gem uninstall libv8
$ gem install therubyracer

( http://www.ruby-forum.com/topic/4306127に感謝します)

于 2012-06-05T22:28:52.547 に答える
43
gem uninstall libv8
brew install v8
gem install therubyracer
于 2012-12-17T23:31:34.690 に答える
15

上記が100%うまくいったかどうかを考慮して、(Railsプロジェクトの一部として)何をしたかを投稿すると思いました:

gem uninstall libv8
bundle update therubyracer

これにより、最新therubyracerの と のより新しいバージョンを確実に入手libV8でき、libv8.a ファイルの欠落から未定義のメソッドまで、私が直面していた複数の問題が修正されたようです。

于 2013-12-03T14:53:11.313 に答える
12

最後に、解決策として therubyracer 0.11.0beta5 を使用します。

therubyracer の使用 (0.11.0beta5)

Gemfile に以下を追加

gem 'therubyracer', '~> 0.11.0beta5'
group :libv8 do
  gem 'libv8', "~> 3.11.8"
end

それからbundle install

Mac OSX 10.8 マウンテン ライオン

于 2012-07-29T07:45:02.497 に答える
10

必要0.11.3であり、失敗している場合は、Mac OS X 10.9 でこれを試してみてください...

gem uninstall libv8
brew install v8
gem install libv8 -- --with-system-v8
gem install therubyracer -v '0.11.3' -- --with-system-v8

詳細については、この問題を参照してください。

おそらく最後の行は必要ありませんが、コマンドを実行したときに-- --with-system-v8開始するのを見たので、安全のためにそれを行いましFetching: libv8-3.11.8.17-x86_64-darwin-13.gem (1%)た...

とにかく、他のすべてがうまくいかなかったとき、それは私にとってはうまくいきました。

于 2014-07-28T07:33:42.857 に答える
7

Mac OSX 10.8 Mountain Lion でGemfileをアップグレードしようとしたときにこの問題が発生した場合gem 'therubyracer', '0.11.0'は、システムlibv8gem をアップグレードするだけでうまくいきました (他の gem をアンインストールする必要はありません)。

$ gem update libv8
$ bundle install

編集

Travis-CI (または他のサーバーにある他の CI ツール) を使用している場合は、 Gemfileにも明示的にlibv8gem を追加する必要があります。

Gemfile

gem 'libv8', '3.11.8.3'

それからbundle installいつものように。libv8インストールにはかなりの時間がかかる可能性があることに注意してください.Travis CIのタイムアウト制限を超えてビルドが失敗する原因になる可能性があることに気付きました. ビルドに開発環境の gem を含めないようにすることで、これを少し軽減できます。

.travis.yml

# ...
bundler_args: --binstubs=./bundler_stubs --without development

アップデート

はい、ほとんどすべての Travis ビルドがタイムアウトし、これが原因で失敗します。誰かがこの問題を解決する方法を知っている場合 (「ダウングレードtherubyracer」が最後の手段であることを願っています)、コメントを残してください!

更新 2

これはすべてのアプリで機能するとは限りませんが、Rails 3.2.9 アプリは実際には必要ではなかったようtherubyracerですlibv8Gemfileからこれらの gem を削除した後、spec がパスし、Travis に再度プッシュされ、正常にビルドされたことを確認しました。したがって、これらの宝石を取り除くことは (実際にそれらが必要かどうかわからない場合)、少なくとも試してみる価値があると思います。

アップデート 3

Mac OS X 10.8 Mountain Lion を使用している場合、OS には独自の Javascript ランナーである Apple JavaScriptCore が既にバンドルされているため、gem はまったく必要ないことを確認して くれたPaul Annesleyに感謝します。therubyracer元の回答の時点で、私は Snow Leopard を使用していたため、それが必要でした。

于 2012-12-05T00:15:57.780 に答える
4

私にとって、Gemfile.lock ファイルを削除して実行すると、bundle install魔法のように機能しました。

于 2014-04-19T04:59:28.280 に答える
3

OSX 10.8.2、ルビー 1.9.3p125

上記のどれもうまくいきませんでした...自分の環境に適した宝石を見つけようとするのにうんざりしたので、g ++ターゲットにソフトリンクしただけで、これが欠けていました:

sudo ln -s `which g++` /usr/bin/g++-4.2

リモート展開にはそれほど役に立ちませんが、ワークステーションで仕事を完了できます.

于 2012-12-08T04:21:33.060 に答える
1

同様の問題が発生しましたが、g++-4.2 が見つからないという不満もありました。XCodeコマンド ライン ツールをインストールしましたが、/usr/bin/g++-4.2 を探していました。g++ (llvm-g++-4.2 を指すシンボリック リンク) がありました。とにかく、g++ へのシンボリック リンクを作成し、バンドルのインストールを再試行しました...うまくいきました!

$ cd /usr/bin

$ sudo ln -s g++ g++-4.2

于 2013-12-19T18:10:06.840 に答える
0

同じエラーがありましたが、これは私にとってはうまくいきました:

  1. コンソールから:gem uninstall libv8

  2. Gemfile に以下を追加します。

    gem 'therubyracer', :platforms => :ruby, :require => 'v8'
    gem 'libv8', '~> 3.11.8'  # Update version number as needed
    
  3. コンソールから:bundle install

rubyracer gem をアップグレードしている最中であれば、bundle update therubyracerその後も同様に実行することをお勧めします。(バージョン番号を指定することを検討してください)

これは Mac 10.6 (Snow Leopard) でした。

于 2012-12-07T00:55:04.233 に答える