it-swarm.com.de

Installation von libv8 gem unter OS X 10.9+

Ich versuche, libv8 3.16.14.3 zu installieren, erhalte jedoch einen Fehler unter OSX Mavericks, wenn ich das neueste stabile rvm und Ruby-1.9.3-p125 verwende.

Dies ist die Ausgabe des Befehls '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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each'
  from /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!'
  from /Users/me/.rvm/gems/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/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/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
  CXX(target) /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
  LIBTOOL-STATIC /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a


Gem files will remain installed in /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3 for inspection.
Results logged to /Users/me/.rvm/gems/[email protected]/gems/libv8-3.16.14.3/ext/libv8/gem_make.out
201
tanookiben

Dies liegt an der Tatsache, dass OS X 10.9+ Version 4.8 von GCC verwendet. Dies wird in älteren Versionen von libv8 nicht offiziell unterstützt, wie in der Pull-Anforderung erwähnt ( https://github.com/cowboyd/libv8/pull/95 ). Bitte versuchen Sie, die Version von libv8 in Ihrem Gemfile (oder) einem bundle update Hochzuladen, sollte ausreichen. Hoffe das hilft.

Aus der libv8 README

Eigene V8 mitbringen

Da libv8 die Schnittstelle für die von therubyracer verwendete V8-Engine ist, müssen Sie möglicherweise libv8 verwenden, auch wenn Sie bereits V8 installiert haben. Wenn Sie Ihre eigene V8-Installation verwenden möchten, anstatt sie für Sie erstellen zu lassen, verwenden Sie die Option --with-system-v8.

RubyGems verwenden:

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

Verwenden von Bundler (in Ihrem Gemfile):

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

Bitte beachten Sie, dass Sie, wenn Sie beabsichtigen, Ihr eigenes V8 zu betreiben, sowohl V8 als auch dessen Header installieren müssen (in libv8-dev für Debian-Distributionen enthalten).

Bringen Sie Ihren eigenen Compiler mit

Sie können einen Compiler Ihrer Wahl angeben, indem Sie entweder die Umgebungsvariable CXX vor der Kompilierung festlegen oder der Bundle-Konfiguration die Option --with-cxx = hinzufügen:

bundle-Konfiguration build.libv8 --with-cxx = clang ++

Bearbeiten:

Wenn dieses Problem durch therubyracer verursacht wird, versuchen Sie Folgendes, wie von rider_on_Railshier vorgeschlagen:

gem deinstalliere libv8

edelstein installieren therubyracer -v YOUR_Ruby_RACER_VERSION

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

442
Gaurav Agarwal

Sie können diese Version tatsächlich auf Mavericks installieren:

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

Ich kann bestätigen, dass dies mit rbenv und Ruby 1.9.3p448 funktioniert

212
Oliver Shaw

El Capitan Lösung für mich:

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

Wo REQUIRED_LIBV8_VERSION für mich war 3.16.14.7, aber Sie müssen überprüfen, welches in Ihrem Bundle enthalten ist (dies war das für Rails 4.2.5)

Möglicherweise müssen Sie die obigen Befehle auch als Superuser ausführen (wenn Ihre Gems und Systembibliotheken global sind).

35

Als ich die akzeptierte Antwort versuchte, wurde libv8 erfolgreich mit gem install libv8 Installiert, aber bundle install Schlug bei libv8 fehl. Ich denke, dass bundle install Versucht hat, eine andere Version von libv8 zu installieren. Ich konnte eine Lösung finden, die für mich funktioniert.

Ich brauchte libv8, weil der Tubyracer davon abhängt. Um es zu installieren, habe ich die Version, die nicht installiert werden konnte, im gem_make.out - Protokoll für den Tubyracer vermerkt. (Der Pfad für das gem_make.out - Protokoll befindet sich in der Fehlermeldung.) In meinem Fall war es 3.16.14.7. (Diese Version wird sich wahrscheinlich im Laufe der Zeit ändern, falls Sie dies in drei Jahren lesen.) Dann habe ich Folgendes getan:

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <- Beachten Sie, dass das Flag von der akzeptierten Antwort abweicht

was dies erlaubt zu arbeiten:

gem install therubyracer

was mir erlaubte, meinen bundle install zu vervollständigen.

Dies funktionierte für mich unter OSX Yosemite.

14
Steven Hirlston

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

die auf diesem Link gefundene Lösung von jasonlynes war der Trick für mich. alles andere hat nicht funktioniert.

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
7

Versuchen Sie es mit dem, was ich in dieser Frage zusammengefasst habe: "gem install therubyracer -v '0.10.2'" auf osx mavericks, die nicht installieren

Es hat bei mir funktioniert (OS X Mavericks)

3
damianmr

Das hat bei mir gut funktioniert:

Versuchen Sie, dieses vorkompilierte Juwel zu installieren:

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

Oder wenn Sie es vorziehen, Ihre eigenen zu bauen:

  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

Quelle: https://github.com/cowboyd/libv8/issues/107

Vielen Dank an Felix Bünemann für das Update!

1
Tilo

Ich hatte das gleiche Problem beim Upgrade von OSX Mountain Lion auf OSX Mavericks. Die akzeptierte Antwort funktionierte für libv8, aber nicht, als ich ging, um den Tubyracer Gem zu installieren.

Ein Upgrade von Ruby-1.8.7-p354 auf Ruby-1.8.7-375 hat mir geholfen. libv8 (3.16.14.3-x86_64-darwin-13) und die therubyracer (0.12.0) -Edelsteine ​​konnten problemlos installiert werden.

vorausgesetzt, Sie verwenden 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
nelsonenzo

Ich habe eine Reihe von Lösungen ausprobiert, die in den vorherigen Antworten beschrieben wurden, aber festgestellt, dass das Ausführen von Bundle (um andere, fehlende Gems zu installieren) versuchen würde, libv8 neu zu kompilieren (obwohl es bereits erfolgreich mit --with-system-v8 Installiert wurde) und daher darunter leidet das gleiche Problem.

Schließlich stellte ich fest, dass das Entfernen des libv8-Gems, das Abrufen der Gem-Datei von Rubygems und das manuelle Installieren der Datei .gem Mit dem Flag --with-system-v8 Für mich funktioniert.

d.h.

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

Vielen Dank an Antwort von Gaurav Agarwal , der mich auf den richtigen Weg geführt hat!

1
XtraSimplicity

Ich habe eine Beta-Version von Xcode für ein anderes Projekt verwendet und vergessen. Zurückschalten mit xcode-select. So etwas wie:

Sudo xcode-select --switch /Applications/Xcode.app/
0
huwr

Was für mich wirklich funktionierte, war das Upgrade von Ruby auf 2.2.0, das Entfernen von Gemfile.lock und das erneute Bündeln.

Lief wie am Schnürchen!

0
tomascharad

Sie können versuchen, das Gem manuell zu kompilieren und zu installieren, indem Sie die auf der libv8-Github-Site angegebene Methode verwenden.

0
RonanOD

Bei El Cap habe ich ein ähnliches Problem. Hier ist was ich getan habe.

brew tap homebrew/dupes
brew install Apple-gcc42

Und dann,

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

Endlich,

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

Das hat bei mir funktioniert.

ersetze 3.16.14.7 mit deiner Version.

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
0
Arian Faurtosh

In MAC-Yosemite mit RVM-Umgebung und Ruby-2.1.1-Version

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

Es funktioniert mit Hilfe des obigen Befehls, kann dies bestätigen.

0
Kishore Mohan