web-dev-qa-db-fra.com

Installation de libv8 gem sur OS X 10.9+

J'essaie d'installer libv8 3.16.14.3 mais j'obtiens une erreur sous OSX Mavericks avec la dernière version stable stable et Ruby-1.9.3-p125.

Voici le résultat de l'exécution de la commande '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
201
tanookiben

Cela est dû au fait que OS X 10.9+ utilise la version 4.8 de GCC. Ceci n'est pas officiellement pris en charge dans les anciennes versions de libv8, comme indiqué dans la demande d'extraction ( https://github.com/cowboyd/libv8/pull/95 ). S'il vous plaît essayez de bump la version de libv8 dans votre Gemfile (ou) un bundle update devrait suffire. J'espère que cela t'aides.

De la libv8 README

Apportez votre propre V8

Puisque libv8 est l'interface du moteur V8 utilisé par therubyracer, vous devrez peut-être utiliser libv8, même si vous avez déjà installé V8. Si vous souhaitez utiliser votre propre installation V8 plutôt que de la construire pour vous, utilisez l'option --with-system-v8.

Utiliser RubyGems:

bijou installer libv8 [-v YOUR_VERSION] - --with-system-v8

Utiliser Bundler (dans votre Gemfile):

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

Veuillez noter que si vous avez l’intention de faire fonctionner votre propre V8, vous devez installer à la fois la V8 et ses en-têtes (disponibles dans libv8-dev pour les distributions Debian).

Apportez votre propre compilateur

Vous pouvez spécifier un compilateur de votre choix en définissant la variable d'environnement CXX avant la compilation ou en ajoutant l'option --with-cxx = à la configuration de l'ensemble:

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

Modifier:

Si ce problème est causé par therubyracer, essayez ce qui suit, comme suggéré par rider_on_Railsici :

bijou désinstaller libv8

gem installer therubyracer -v YOUR_Ruby_RACER_VERSION

bijou installer libv8 -v YOUR_VERSION - --with-system-v8

442
Gaurav Agarwal

Vous pouvez réellement installer cette version sur Mavericks:

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

Je peux confirmer que cela fonctionne avec rbenv et Ruby 1.9.3p448

212
Oliver Shaw

El Capitan Solution pour moi:

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

REQUIRED_LIBV8_VERSION était pour moi 3.16.14.7, mais vous devez vérifier lequel est celui dont vous avez besoin dans votre bundle (il s'agissait de celui pour Rails 4.2.5)

Vous devrez peut-être aussi exécuter les commandes ci-dessus en tant que superutilisateur (si vos gems et vos bibliothèques système sont globaux)

35
Evgenia Manolova

Lorsque j'ai essayé la réponse acceptée, libv8 a été installé avec succès avec gem install libv8, mais bundle install a échoué sous libv8. Je pense que bundle install essayait d'installer une version différente de libv8. J'ai pu trouver une solution qui a fonctionné pour moi.

J'avais besoin de libv8 car therubyracer en dépend. Pour l’installer, j’ai noté la version qui échouait dans le journal gem_make.out de therubyracer. (Le chemin d'accès au journal gem_make.out sera dans le message d'échec.) Dans mon cas, il s'agissait de 3.16.14.7. (Cette version changera probablement avec le temps, si vous lisez ceci dans trois ans.) J'ai ensuite fait ceci:

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <- note l'indicateur différent de la réponse acceptée

qui a permis que cela fonctionne:

gem install therubyracer

ce qui m'a permis de compléter mon bundle install.

Cela a fonctionné pour moi sur OSX Yosemite.

14
Steven Hirlston

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

la solution de jasonlynes trouvée sur ce lien a fait l'affaire pour moi. tout le reste n'a pas fonctionné.

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
Stefanos.Ioannou

Essayez avec ce que j'ai résumé dans cette question: "gem installer therubyracer -v '0.10.2'" sur osx mavericks ne pas installer

Cela a fonctionné pour moi (OS X Mavericks)

3
damianmr

Cela a bien fonctionné pour moi:

Essayez d’installer cette gem précompilée:

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

Ou si vous préférez construire le vôtre:

  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

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

Merci à Felix Bünemann pour le correctif!

1
Tilo

J'ai eu le même problème lors de la mise à niveau d'OSX Mountain Lion vers OSX Mavericks. La réponse acceptée a fonctionné pour libv8, mais pas lorsque je suis allé installer l’installation de la gem thubyracer.

La mise à niveau de Ruby-1.8.7-p354 à Ruby-1.8.7-375 a fait l'affaire pour moi. libv8 (3.16.14.3-x86_64-darwin-13) et les gems therubyracer (0.12.0) installés sans problème.

en supposant que vous utilisiez 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

J'ai essayé plusieurs solutions décrites dans les réponses précédentes, mais j'ai constaté qu'exécuter bundle (pour installer d'autres gems manquants) tenterait de recompiler libv8 (bien qu'il l'ait déjà installée avec succès en utilisant --with-system-v8) et souffrait donc de la même problème.

Finalement, j'ai trouvé que la suppression de la gem libv8, l'extraction du fichier gem de rubygems, puis l'installation manuelle du fichier .gem avec le drapeau --with-system-v8 fonctionnaient pour moi.

c'est à dire.

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

Merci à réponse de Gaurav Agarwal pour m'avoir conduit dans la bonne voie!

1
XtraSimplicity

J'utilisais une version bêta de Xcode pour un autre projet et j'avais oublié. Revenez en arrière avec xcode-select. Quelque chose comme:

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

Ce qui a vraiment fonctionné pour moi a été de mettre à niveau Ruby vers la version 2.2.0, de supprimer Gemfile.lock et de le regrouper à nouveau.

Travaillé comme un charme!

0
tomascharad

Vous pouvez essayer de compiler et d’installer la gem manuellement à l’aide de la méthode mentionnée sur le site github de libv8.

0
RonanOD

J'ai rencontré un problème similaire sur El Cap. Voici ce que j'ai fait.

brew tap homebrew/dupes
brew install Apple-gcc42

Puis,

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

Finalement,

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

C'est ce qui a fonctionné pour moi.

remplacez 3.16.14.7 par votre 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

Sous MAC-Yosemite avec environnement RVM et version Ruby-2.1.1

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

Cela fonctionne avec l'aide de la commande ci-dessus, peut confirmer cela.

0
Kishore Mohan