OS X 10.9以降へのlibv8 gemのインストール


212

libv8 3.16.14.3をインストールしようとしていますが、最新の安定したrvmとruby-1.9.3-p125を使用しているOSX Mavericksでエラーが発生します。

これは、コマンド「gem install libv8」を実行した出力です。

~/src(branch:master) » gem install libv8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
  ERROR: Failed to build gem native extension.

    /Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.5
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Using compiler: g++
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make[1]: *** [/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a] Error 1
make: *** [x64.release] Error 2
/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!': libv8 did not install properly, expected binary v8 archive '/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a'to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
  from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!'
  from extconf.rb:7:in `<main>'
GYP_GENERATORS=make \
  build/gyp/gyp --generator-output="out" build/all.gyp \
                -Ibuild/standalone.gypi --depth=. \
                -Dv8_target_arch=x64 \
                -S.x64  -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
  CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
  LIBTOOL-STATIC /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a


Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3 for inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/gem_make.out

回答:


463

これは、OS X 10.9+がバージョン4.8のGCCを使用しているためです。これは、プルリクエスト(https://github.com/cowboyd/libv8/pull/95)で言及されているように、古いバージョンのlibv8では公式にはサポートされていません。Gemfileにlibv8のバージョンを追加してみてください(または)bundle updateで十分です。お役に立てれば。

libv8 READMEから

自分のV8を持参

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

RubyGemsの使用:

gem install libv8 [-v YOUR_VERSION]---with-system-v8

Bundlerを使用する(Gemfile内):

バンドル構成build.libv8 --with-system-v8

独自のV8を実行する場合は、V8とそのヘッダー(Debianディストリビューションのlibv8-devにあります)の両方をインストールする必要があることに注意してください。

自分のコンパイラを持参

コンパイル前にCXX環境変数を設定するか、バンドル設定に--with-cxx =オプションを追加することにより、任意のコンパイラを指定できます。

バンドル構成build.libv8 --with-cxx = clang ++

編集:

この問題がtherubyracerによって引き起こさ れた場合は、rider_on_railsによって提案されている次のことを試してください

gemアンインストールlibv8

gem install therubyracer -v YOUR_RUBY_RACER_VERSION

gem install libv8 -v YOUR_VERSION---with-system-v8


残念ながら、作業中のプロジェクトでlibv8のバージョンを変更することはできません。今のところOSX 10.8にダウングレードします!
tanookiben 2013年

35
--with-system-v8FTW!
JPowell 2014年

24
ありがとう! bundle config build.libv8 --with-system-v8 助けて!
Andrey Skuratovsky、2015

7
bundle updateしびれとapple-upgrade-
inflicted

6
場合、誰かがして、以下のような問題を取得しtherubyracer、このいずれかを解いた後、宝石:stackoverflow.com/questions/23536893/...
グスタボSemião-ロボ

219

実際にそのバージョンをMavericksにインストールできます。

gem install libv8 -v 3.11.8.17 -- --with-system-v8

これがrbenvおよびruby 1.9.3p448で動作することを確認できます


5
私にも同じ-os x 10.9、rbenv、ruby-2.0.0-p247
roo

1
古いプロジェクトの1.8.7に取り組みました:)
Juan de Dios H.

3
なぜこれが機能するのですか?コマンドのどの部分が--with-system-v8変更であり、それは何をしているのですか?
David Krider 2013年

4
ここの説明に従って、github.com / cowboyd / libv8 libv8を使用すると、自分でコンパイルするのではなく、既存のバージョンのV8エンジン(en.wikipedia.org/wiki/V8_(JavaScript_engine))を使用できます。C ++コンパイラが変更されたため、mavericksで問題となっているのはコンパイルです。こちらの手順(stackoverflow.com/a/19668162/2012130)を使用して自分でlibV8をコンパイルできます
Oliver Shaw

5
rbenvおよびruby 2.1.1で動作しますgem install libv8 -- --with-system-v8
Andrew

35

El Capitan Solution for me:

$ brew install v8
$ gem install libv8 -v REQUIRED_LIBV8_VERSION -- --with-system-v8

REQUIRED_LIBV8_VERSION私にとってはどこでしたが3.16.14.7、あなたはあなたのバンドルに必要なものをチェックする必要があります(これはレール用のものでした4.2.5

上記のコマンドをスーパーユーザーとして実行する必要がある場合もあります(gemおよびシステムライブラリがグローバルの場合)。


4
brewインストールまたはgemインストールにsudoを使用しないでください。これにより、権限の問題が発生します。
bendangelo 2016

2
@benDangelo、あなたが言うことは絶対に正しいです。ソフトウェアをインストールするためにシステムがroot権限を必要とする場合がありますが、一般的にsudoを使用することは悪い習慣です。返信を編集します。ありがとうございます。
エフゲニアマノロバ2016

わたしにはできる!ありがとうございました。これが唯一の有効な解決策でした。
Charles Hamel

14

受け入れられた回答を試したところ、libv8はで正常にインストールされましたがgem install libv8bundle installlibv8では失敗しました。それbundle installはlibv8の異なるバージョンをインストールしようとしていたと思います。自分に合った解決策を見つけることができました。

therubyracerがlibv8に依存しているため、私はlibv8を必要としました。インストールするために、インストールに失敗したバージョンgem_make.outをrubyracer のログに記録しました。(gem_make.outログのパスは失敗メッセージに含まれます。)私の場合は3.16.14.7でした。(このバージョンは、これから3年後に読んでいる場合に備えて、おそらく時間の経過とともに変更されます。)次に、これを行いました。

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <-受け入れられた回答とは異なるフラグに注意してください

これが機能することを可能にしました:

gem install therubyracer

これにより、を完成させることができましたbundle install

これはOSX Yosemiteで私のために働いた。


OSX Yosemiteにアップグレードした直後にバンドルのインストールが失敗したことに注意してください。このため、このソリューションを見つける必要がありました。
Steven Hirlston、2014年

これはOS X Yosemiteで見事に機能しますが、他の多くの回答は単に機能しません。
ロイ・リー

どうも。「therubyracer」がついにインストールされました。
Kiryl Plyashkevich 2018

8

https://github.com/cowboyd/therubyracer/issues/339

そのリンクで見つかったjasonlynesのソリューションが私にとってはトリックでした。それ以外は機能しませんでした。

brew install homebrew/versions/v8-315
brew link --overwrite v8-315 --force
gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -v '0.12.2' -- --with-system-v8

1
これが2020年にまだ問題である理由を信じることができません...ありがとう@ Stefanos.Ioannouこれは私のために働いたソリューションです。
アブラハムミラノ

6

各バージョンを知る必要がなく、バンドラーを設定できます。@ 3.15は他のバージョンに置き換えることができます。

$ 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

1
macOS Catalinaで動作します。ありがとうございました!
Aleksandr K.

4

macOS Catalina @ 10.15およびにアップデートしましたruby 2.6.5。しばらくしてだlibv8therubyracer私は更新のMacOSはまだ(私聞いたがにないお勧めしますが、再インストールするにはruby問題ないはずです)。

まず、XCodeを更新する必要がありました

  1. xcode-select --install

以前rbenvは更新してrubyruby手動でバージョンをに設定していまし/Users/<username>/.rbenv/version2.6.5。ただし、プロジェクトに.ruby-versionファイルが含まれている場合は問題になりません。

それから私は私があちこちにインストールされているすべてのバージョンをクリーンアップlibv8(通常で/usr/local/opt/): brew uninstall v8brew uninstall libv8@3.15

  1. brew install v8@3.15

今、https://github.com/cowboyd/libv8#do-i-get-a-binaryに従って、インストールしました

  1. gem install libv8 -v '3.16.14.19' -- --with-system-v8

bundle installエラーなしで実行できます。


4

私の問題であるためtherubyracer、時に更新するmacOS 10.15と、ruby-2.6.5

そして、以下は私のために働きます:

brew install v8@3.15

gem install libv8 -v 3.16.14.19 -- --with-system-v8

gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8@3.15


1

OSX Mountain LionからOSX Mavericksにアップグレードしたときにも同じ問題が発生しました。受け入れられた回答はlibv8で機能しましたが、rubyracer gemをバンドルインストールするときは機能しませんでした。

ruby-1.8.7-p354からruby-1.8.7-375にアップグレードすることでうまくいきました。libv8(3.16.14.3-x86_64-darwin-13)とtherubyracer(0.12.0)gemが問題なくインストールされました。

rbenvを使用すると仮定します。

rbenv versions
  system
  * 1.8.7-p354
  2.0.0-rc2

rbenv uninstall 1.8.7-p354
rbenv install 1.8.7-p375

rbenv versions
  system
  * 1.8.7-p375
  2.0.0-rc2

bundle install

1

これは私にとってはうまくいきました:

このコンパイル済みのgemをインストールしてみてください。

https://dl.dropboxusercontent.com/u/7919548/gems/libv8/libv8-3.11.8.17-x86_64-darwin-13.gem(sha1:5ce07aaf4085fff5a5e10fe018fd6b22021bef3b

または、独自に作成する場合:

  git clone https://github.com/cowboyd/libv8.git
  cd libv8
  git checkout 3.11
  bundle install
  bundle exec rake clean build binary
  gem install pkg/libv8-3.11.8.17-x86_64-darwin-13.gem

ソース:https : //github.com/cowboyd/libv8/issues/107

修正してくれたFelixBünemannに感謝します!


1

以前の回答で概説したいくつかの解決策を試しましたが、(他の欠落しているgemをインストールするために)バンドルを実行するとlibv8が再コンパイルされ(既にを使用して正常にインストールされているにもかかわらず--with-system-v8)、そのため同じ問題が発生することがわかりました。

最終的に、libv8 gemを削除してrubygemsからgemファイルをフェッチ.gemし、--with-system-v8フラグを使用してファイルを手動でインストールするとうまくいくことがわかりました。

すなわち

gem uninstall libv8
gem fetch libv8 -v LIBV8_VERSION
gem install libv8-LIBV_VERSION.gem -- --with-system-v8
bundle

私を正しい道に導いてくれたGaurav Agarwalの回答に感謝し ます。


1

これのどれも私を助けませんでした...私が何をしても、therubyracerの私のgemインストールはこのエラーで不平を言い続けました:

Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Beginning compilation. This will take some time.
Building v8 with env CXX=clang++ LINK=clang++  /usr/local/bin/gmake x64.release ARFLAGS.target=crs werror=no
GYP_GENERATORS=make \
build/gyp/gyp --generator-output="out" build/all.gyp \
              -Ibuild/standalone.gypi --depth=. \
              -Dv8_target_arch=x64 \
              -S.x64 -Dmac_deployment_target=10.15 -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3 -Dwerror=''
  File "build/gyp/gyp", line 12
    except ImportError, e:
                      ^
SyntaxError: invalid syntax
gmake: *** [Makefile:268: out/Makefile.x64] Error 1

最終的に私を助けたのは、https: //www.bountysource.com/issues/82833405-libv8-fails-to-build-on-catalina-10-15で偶然見つけたこの他のフォーラムでした

私のために働いた最終的な解決策:

これらの行を.zshrcファイルに追加する必要がありました。

export CXX=clang++
export GYPFLAGS=-Dmac_deployment_target=10.15

次に、これらのコマンドを実行する必要がありました。

source ~/.zshrc
brew tap homebrew/homebrew-core
brew install v8@3.15
gem uninstall therubyracer
gem uninstall libv8
gem install libv8 -v '3.16.14.19' -- --with-system-v8
gem install therubyracer -v '0.12.3' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install

他の誰かがこれが便利だと思うことを願っています!



0

RVM環境とruby-2.1.1バージョンを備えたMAC-Yosemite

gem install libv8 -v 3.16.14.3 -- --with-v8-lib gem install therubyracer

上記のコマンドを使用して動作し、これを確認できます。


0

私にとって本当にうまくいったのは、rubyを2.2.0にアップグレードし、Gemfile.lockを削除して、もう一度バンドルすることでした。

魅力のように働いた!


0

これは私のために働いたものです。

3.16.14.7お使いのバージョンに置き換えます。

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

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

brew install homebrew/dupes/apple-gcc42

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

bundle install

これは古いgccを強制します。これはせいぜいバンドエイドであり、間違いなく将来的に問題を引き起こします。
ジム・ルベル

0

El Capでも同様の問題に直面しています。これが私がしたことです。

brew tap homebrew/dupes
brew install apple-gcc42

その後、

export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2

最後に、

brew uninstall v8
gem install libv8 -v 3.11.8.17 -- --with-system-v8

0

別のプロジェクトでXcodeのベータ版を使用していて、忘れていました。で元に戻しxcode-selectます。何かのようなもの:

sudo xcode-select --switch /Applications/Xcode.app/

-6

Gemfileから削除:

gem 'therubyracer'、:platforms =>:ruby


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