228 votes

Installation de la gemme libv8 sur OS X 10.9+

J'essaie d'installer libv8 3.16.14.3 mais j'obtiens une erreur sur OSX Mavericks en utilisant la dernière version stable de rvm 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

0 votes

Sachez que les projets Rails n'ont pas besoin de therubyracer juste pour précompiler les actifs tant que execjs peut trouver NodeJS dans votre chemin.

478voto

Gaurav Agarwal Points 2202

Ceci est dû au fait que OS X 10.9+ utilise la version 4.8 de GCC. Ceci n'est pas supporté officiellement dans les anciennes versions de libv8 comme mentionné dans la pull request ( https://github.com/cowboyd/libv8/pull/95 ). Veuillez essayer d'augmenter la version de libv8 dans votre Gemfile (ou) un bundle update devrait suffire. J'espère que cela vous aidera.

De la librairie libv8 LISEZ-MOI

Apportez votre V8

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

Utilisation de RubyGems :

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

Utilisation de Bundler (dans votre fichier Gemfile) :

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

Veuillez noter que si vous avez l'intention d'exécuter votre propre V8, vous devez installer à la fois V8 et ses en-têtes (qui se trouvent dans libv8-dev pour les distros Debian).

Apportez votre propre compilateur

Vous pouvez spécifier le compilateur de votre choix soit en définissant la variable d'environnement CXX avant la compilation, soit en ajoutant l'option --with-cxx= à la configuration du bundle :

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

Editer :

Si ce problème est dû à therubyracer Essayez les solutions suivantes, suggérées par rider_on_rails aquí :

gem uninstall libv8

gem install therubyracer -v VOTRE_RUBY_RACER_VERSION

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

0 votes

Malheureusement, je ne peux pas changer la version de libv8 dans le projet sur lequel je travaille. Je vais donc passer à OSX 10.8 pour l'instant !

38 votes

--with-system-v8 FTW !

28 votes

Merci de votre attention ! bundle config build.libv8 --with-system-v8 aide !

224voto

Oliver Shaw Points 1503

Vous pouvez 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

5 votes

Idem pour moi - os x 10.9, rbenv et ruby-2.0.0-p247

1 votes

J'ai travaillé sur la version 1.8.7 pour un ancien projet :)

0 votes

Cela fonctionne pour moi avec la version 1.9.3 :)

15voto

Steven Hirlston Points 121

Lorsque j'ai essayé la réponse acceptée, libv8 s'installait avec succès avec gem install libv8 mais bundle install échouerait avec la 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 ne s'installait pas dans le fichier gem_make.out journal pour therubyracer. (Le chemin d'accès au fichier gem_make.out sera dans le message d'échec). Dans mon cas, il s'agissait de la version 3.16.14.7. (Cette version changera probablement avec le temps, au cas où vous liriez ceci dans trois ans). Ensuite, j'ai fait ceci :

gem install libv8 -v 3.16.14.7 -- --with-v8-lib <-- noter que le drapeau est différent de celui de la réponse acceptée

ce qui a permis à ce système de fonctionner :

gem install therubyracer

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

Cela a fonctionné pour moi sur OSX Yosemite.

0 votes

Je dois noter que l'installation de la liasse s'est interrompue pour moi immédiatement après la mise à jour vers OSX Yosemite, c'est pourquoi j'ai dû trouver cette solution.

0 votes

Cela fonctionne parfaitement sur OS X Yosemite alors que beaucoup d'autres réponses ne fonctionnent tout simplement pas.

0 votes

Merci mon ami. 'therubyracer' est enfin installé.

3voto

damianmr Points 199

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

Cela a fonctionné pour moi (OS X Mavericks)

1voto

Tilo Points 13833

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:5ce07aaf4085fff5a5e10fe018fd6b22021bef3b)

Ou si vous préférez construire vous-même :

  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

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

Merci à Felix Bünemann pour la réparation !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X