therubyracer-Gem :: Ext :: BuildError:エラー:gemネイティブ拡張のビルドに失敗しました


82

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

  • libv8(3.16.14.3)
  • therubyracer(0.12.1)

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

1)libv8のインストール

libv8とは何ですか?私の少しの調査は、それがグーグルクロームによって使用されるある種のjavascriptライブラリであることを示しているようですか?

私はそれをインストールするのに苦労していました、しかしこの素晴らしい投稿は私のエラーとそれをバイパスする方法についてのよく説明された答えの両方を持っていました。

だから私libv8

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

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

2)ルビレーサーの取り付け

次のステップで、therubyracergemのインストールに問題がありました。このgemが何をするのかよくわかりませんが、それは私がしようとしている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. 私も試したCCCXXCPP説明したように、環境変数を、ここで私はそれはそれはもう私の拾ったとしても効果があるとは思いませんが、gcc v4.6コンパイラを。


この、多分?
dax 2014年

2
<ため息> Macにtherubyracerをインストールするのにいつも問題がありました=(
maerics 2014年

回答:


167

この手順は私にとってはうまくいきました。

OS:Maverick Ruby:2.1.1

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

1つの変更で、この回答を受け入れます。手順3と2を切り替えて機能させました。libv8をインストールしてから、therubyレーサーをインストールします。ありがとう!
user2490003 2015年

おかげで、それは魅力のように働きました!私は疲れているに違いありませんが、バージョン番号ではなくシャープが指示に含まれていると便利です。別のバージョンをインストールする必要がありましたが、メモをコピーするだけです。
テイラードWebサイト2015

ここで説明したように、libv8バージョンは重要であることに注意てください。奇数ポイントリリース(バージョンの最後の2桁)にはバイナリも含まれています。
ジミーチュウ

インストール/アンインストール/再インストールのダンスは、Mojaveでうまくいきました。私はこの古いものが嫌いです!:Dは
emptywalls

74

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以前に走っていましたが、これが実際に必要だったかどうかはわかりません。


1
最終的に機能する前に、Gemfile.lockを削除する必要がありました。ヒントのためのThx。
abuzze 2016

4
+1ですが、将来の読者のためにgem install libv8 -v 'A.B.C.D'、必要に応じて読みたいと思うでしょう。この記事の執筆時点では3.16.14.15です。
デイ

1
1、ケースであなたはtherubyracer使用の特定のバージョンをインストールしたい:gem install therubyracer -v 'x.x.x' -- --with-v8-dir=/usr/local/opt/v8-315
AVITAL

1
jottrの答えによく似ています。多分彼に叫び声をあげなさい。
omikes 2016年

5
私にとっては、V8 dirがあった。/usr/local/opt/v8@3.15
SamuelLJohnson

26

最初にlibv8gemをアンインストールしてから、rubyracerをインストールしてから、libv8をインストールしてみてください。

gem uninstall libv8
gem install therubyracer
gem install libv8 -- --with-system-v8

1
運がない:(エラーの次の行は興味深いようでした:g ++-4.6:エラー:x86_64:そのようなファイルまたはディレクトリはありませんg ++-4.6:エラー:認識されないオプション '-arch'
user2490003 2014年

1
libv8前にインストールしたtherubyracer方がうまくいくことがわかりました。
クリスピーターズ

24

githubに投稿されたTertomのソリューションは、それぞれのgithubの問題とここで提案された他のすべてのソリューションを試した後、私のためにそれを解決しました。
私はまったく同じシステム構成を持っていました。
これはエルキャピタンにあるので、質問に対する正確な答えではありませんが、人々はこの情報が役立つと思うかもしれません。

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

同じ問題を解決しました

  • MacOS 10.11.2
  • Ruby 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

1
これは私のために働いた。rubyracerがインストールする予定のlibv8gemのバージョンを指定する必要があることがわかりました。
ポールスタージェス2016年

1
ええbundle config build.libv8 --with-system-v8、私にとっての鍵だったと思います。ありがとう!
natebeaty 2017

これが私のために働いた唯一のことでした(そして2019年後半にカタリナで試しました)
サムジョンソン

自作/バージョンは非推奨になりましたが、非常に役立ちました。私の問題は、現在のリンクが「/ usr / local / bin / d8」にリンクされていることでした。それをリンク解除して実行すること brew link --force v8-315は私のために働いた。2 / 2020-MacOS10.15.3。--Rubyバージョン1.9.3-Bundler 1.16.4 --libv8バージョン13.16.14.19
Thomas

12

macOS 10.15を使用しているすべての人にとって、brewが変更されたため、これらのコマンドを実行する必要があります。

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

6

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

Yosemite 10.10.1、Rails 3.2.x、Ruby1.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

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:Mavericks


3

私はこの問題を抱えてMacOS Mojave 10.14.2おり、パッケージv8-315がインストールされている場所とフォルダー名を見つけたときにこの問題を修正することができました。私の場合、ここにありました/usr/local/opt/v8@3.15

これを修正するために、次に実行しました。

brew install v8-315
gem install libv8 -v '3.16.14.15' -- --with-system-v
gem install therubyracer -v '0.12.2' -- --with-system-v8 --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

1

ほぼ2日間頭を骨折した後、これは私のために働きました。

rvm install 2.2.2
gem install rails
bundle install

1

libv8のx64(64ビットバリアント)をインストールしたにもかかわらず、libv8の依存関係のため、therubyracerをmacOS Catalina10.15でビルドすることができませんでした。

私にとっての解決策は、therubyracerからmini_racerに切り替え、mini_racer gemをインストールし(ローカルでビルドする必要はありません)、そして、ちょっとプレスト!続けることができました。

それを試してみてください!


プロジェクトでLESSファイルをCSSにコンパイルする必要がある場合を除く:/
MartinCarel20年

1

私の場合

MacOS:Catalina、Ruby:2.3.3rbenv(RVMではない)を使用、必要なtherubyracerバージョン:0.12.3(関係ありません)

私はすべての解決策を試しましたが、うまくいきました。親愛なるplsは、貼り付けソリューションを盲目的にコピーしません(私の場合はbczを実行しました)。最初に読み取り、必要に応じて以下のコマンドのバージョンを変更します。コマンドのほとんどは、exisiting回答のほとんどに共通しているが、どのような私のために働いたgem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)代わりのgem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315おかげ淳二志の彼のコメントのために、この答え

1. brew install gcc
2. brew tap homebrew/versions   (If it wont work then below 2 steps, for latest MacOS version)
2.a. brew tap brewsci/bio
2.b. brew tap brewsci/science
3. brew install v8-315     (uninstall if v8 installed previously without '-315')
4. gem install libv8 -v '3.16.14.19' -- --with-system-v8   (Be careful with the libv8 version mentioned in this command, replace version number with one required)
5.a. gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315    (If it does not work then try below one, In my case below command worked)
5.b. gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)

完了したら、続行します bundle install

:宝石をインストールしながらtherubyracerのバージョンそのため、チェックlibv8がインストールされているが、それは私がに言及したものよりも切り抜いている場合は、ステップ4そして、あなたのtherubyracerがインストールされませんので、ただ一つのこと、やるgem uninstall libv8その後、繰り返しステップ4変更バージョンtherubyracerのインストール中にコンソールに表示されるもの


1

これは私のために働いています:

gem install libv8 -v '3.16.14.17' -- --with-system-v8
brew install v8-315
gem install therubyracer -v '0.12.3' --source 'http://rubygems.org/' -- --with-v8-dir='/usr/local/opt/v8@3.15'

最後のコマンドについてはbrew --prefix v8-315、私の場合はの出力を確認してください/usr/local/opt/v8@3.15


0

以下のコマンドは、バンドラーを使用してカタリナで私のためにそれを解決しました

$ brew install v8@3.15
$ bundle config build.libv8 --with-system-v8
$ bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.15)
$ bundle install

-2

問題が発生したときに気づきました。

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

次に、build-essentialをインストールする必要があります

sudo apt install build-essential

mini_raceのインストールの問題で動作します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.