libv8のインストールエラー:エラー:gemネイティブ拡張のビルドに失敗しました


183

私はレールプロジェクトを作りました、

rails new test_bootstrap.

成功した。

プロジェクトディレクトリに移動して宝石を追加しました

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"

そして走る

bundle install

その後、私はこのエラーがあります。

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을  없습니다.                                                          지정된 경로를 찾을 
없습니다.                                                          지정된 경로를 찾을  없습니다.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
        from extconf.rb:7:in `<main>'                                                    


Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.

一部の韓国人には申し訳ありません。それは言う、それは選ばれた道またはそのような何かを見つけることができません。

そして私はこのコマンドを実行しようとしました

gem install libv8 -v '3.16.14.3' 

同じエラーを投げます。



私はこれを見つけました、私はpythonをインストールしてパスを設定しなければなりません。そして今それは動作します。人々がこのスレッドで解決することを願っています。stackoverflow.com/questions/10812696/...
カンナ

libv8とNode.jsの周りのエコシステムに対する Debianのセキュリティサポート欠如から:「Node.jsプラットフォームは、大量のセキュリティを経験するlibv8-3.14の上に構築されています。問題はありますが、現在プロジェクト内にボランティアがいないか、セキュリティチームが十分に関心を持っており、これらの次の問題を
回避

回答:


612

これを試してください:

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

注: libv8は、rubyracerが使用するV8エンジンのインターフェースであるため、V8がすでにインストールされている場合でも、libv8を使用する必要がある場合があります。自分で構築するのではなく、独自のV8インストールを使用する--with-system-v8場合は、オプションを使用します。

詳細については、githublibv8のドキュメントを参照してください。


6
私はそれを使います。コンパイルは問題ありませんが、「バンドル」を実行するとエラーが発生します
Sucrenoir

10
この部分は機能しましたが、rubyracerのインストール時にエラーが発生します。libv8で以前に取得していたものと同様のエラーが表示されます。「バンドルする前に、このようなことを確認してください」というメッセージが表示されますが、「gem install therubyracer」を実行しようとすると、「Failed to build gem native extension。」エラー
sixty4bit 2015年

1
ルートとして上記の引数を指定してアンインストールして再インストールします。動作しません。私のエラーはAn error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.キャッシュフォルダーBundler::GemspecError: Could not read gem at /home/gitlab/gitlab/vendor/bundle/ruby/2.1.0/cache/libv8-3.16.14.3-x86_64-linux.gem. It may be corrupted. 全体を削除して再実行することです。動作します。bundle install --full-index --deployment --without development test postgres aws
Nick Dong

1
パーフェクト!gem install libv8 -v '3.16.14.3' -- --with-system-v8OS X 10.11で私のために働いた。
Jagdeep Singh 2016

私はそれがシステムv8を見つけることができなかったので、そうすることbrew install v8は助けました。ここではこの答えで指示に従ってください:stackoverflow.com/questions/24081473/...
redfox05

154

libv8 / therubyracerの問題を解決する方法

libv8のインストール後に、rubyracerのインストール中にエラーが発生するという同様の問題が発生しました。これが私の解決策です:

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
   
$ bundle install

-therubyracerのインストールエラーを参照してください-

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

-libv8のインストールエラーを参照してください-

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8

4
この返信で言及されている手順は最も効果的です。rubyracerをgemインストールする前に、まずlibv8をgemインストールし、システム全体のv8をインストールするためにアンインストールする必要があります(--with-system-v8フラグを指定したlibm8をインストールします):)
Parthan

1
最初のステップは必要ないと思います。bundle installを実行する前に、brewを使用してシステムv8をインストールしてください。次にtherubyracer gemとlibv8 gemの両方を手動でインストールします。そしてバンドルインストールを実行します。しかし、私はまだそれを試していません。
gitb 2015年

これは、OSX 10.10.5でlibv8のruby 2.1.2p95を使用して動作しました3.16.14.11
Michael Oakley

3
「3.16.14.3」をバンドルが実行しようとしているバージョンに変更することを忘れないでください。そうしないと、バンドルのインストールを実行しても機能しません
Jonathon Blok

またlibv「3.16.14.11」のルビー1.9.3と(シエラ)10.12のために働いていた
sojourner

48

自作でこれは私がこのエラーを解決するのに役立ちます。

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

rubyracer Githubの問題で見られます。


これは私にとってはうまくいきましたが、brew経由で古いバージョンのv8をインストールします。
Sanjay

1
このエラーにより、Rubyバージョンを切り替えるたびに気が狂います。私はあなたがv8バージョンのオプションとそれを取得するためのパスを調整してみることができると思います。
コーディング中毒

このソリューションのみが機能します。ソリューションをありがとう
AMIC MING

@codingaddictedこのエラーが発生し続けると思ったことはありませんか?新しいプロジェクトのルビーとレールを更新し、古いプロジェクトの新しいシェルを開くと常にこのエラーが発生しました。rvmはこれらのバージョンの問題を処理するはずですが、古いプロジェクトの新しいシェルを開くたびに上記のコマンドを実行し続ける必要があります。
iamse7en 2016年

@ iamse7en私が覚えている限り、Rubyのバージョンごとに実行する必要があります。Rubyを更新したときにこのエラーが発生しました(ただし、先月はあまりRubyを実行しておらず、別のバージョンで遊んでいません)。
コーディング中毒、

43

上記のコマンドを試してみましたが、個々のgemをインストールする場合は非常に問題ありませんが、バンドルユーザーはバンドル構成を使用する必要があります。

使用する

bundle config build.libv8 --with-system-v8 

そして

bundle config build.therubyracer --with-system-v8

特定のGemをインストールするときに使用されるパラメーターを取得するように、Bundlerを構成するには


6
bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
なんらかの

7

私はあなたがtherubyracer窓の上で宝石を必要とするとは思いません。V8エンジンを使用したjavascriptランタイムです。そのため、インストールしようとしていlibv8ます。

Gemfileからgemを安全に削除できます。

Railsはどのランタイムでも見つけることができるので喜んで使用します。execjsnodejsなどは、すべての可能なオプションです。

MicrosoftはすでにWindowsにJavaScriptのJScriptランタイムを組み込んでおり、Railsはそれを使用しています。詳細はこちらをご覧ください


6

問題を修正する他の回避策は、Gemfileでそれらを分離することです

group :production do
 gem 'libv8', '~> 3.11.8.3'
 gem 'therubyracer', :platform => :ruby
end

次にbundleコマンドを実行します:bundle install --without production


これは、@ Litmusの回答と組み合わせるとうまく機能します。これは、Windowsの開発設定を壊すことなく、gemを構成(おそらくデプロイメントに関連する)に保持する方法を示しているためです。
glenatron 14

3

私は使用する代わりにこの宝石をインストールすることもできませんでした

--with-system-v8

一度私にとってうまくいったバンドルの更新を試みてください


3

githubでこれを見つけました

上記の手順を試した場合は、b8からv8-315とv8をインストールします。

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8

2

それは私にとってはうまくいきます。それをGemfileに入れます

gem 'libv8'、 '〜> 3.16.14.7'


この解決策が私を導き、私のためbundle install --no-deploymentbundle install働いた
simo

2

私の問題はと関連していなかったtherubyracerすべてだけでlibv8宝石と指摘@ rishav-bhardwajとして--with-system-v8トリックをしなかった、代わりに私は、execに持っていました

bundle update

その後

bundle install

そして最後に

Bundle complete!

エラーはなくなりました!

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.


1

私の場合'mini_racer', '~> 0.2.6' 、私のGemfileで要求することでこの状況を解決し ました

次に、バンドルインストールコマンドが機能しました。


0

で試す

gem "therubyracer"、 "〜> 0.10.2" to Gemfile

また、依存するgem libv8(3.3.10.4)がインストールされ、ビルドgemネイティブ拡張の失敗の問題が解決されました。


0

3.16.14.7以下のコマンドを使用してlibv8の問題を解決しました:

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

そして、bundle install正常に完了しました。


0

これはlibv8とは関係がなく、therubyracerとは関係があると思います。

Railsアプリでバンドルインストールを実行しているときに同じエラーを受け取りました。同様にこれに遭遇した場合は、次のようにバンドルの外にgemをインストールしてみてください:

gem install therubyracer

次にbundle installを実行します。私もこれがあなたのために働くことを望みます。


0

との使用にも問題がlibv8ありましたmini_racer。で問題を解決しました

brew install v8

bundle update libv8 mini_racer

最新バージョンを使用mini_racer 0.2.10し、libv8 7.3.492.27魔法のように働きました。


0

私は私のローカルで以下のコマンドを試しました、それはうまくいきました:

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