web-dev-qa-db-fra.com

bundle install/update: l'installation de libv8 (therubyracer) échoue (avec les extensions natives)

Je voulais récemment mettre à jour mon ensemble de pierres précieuses, mais j'ai rencontré des problèmes d'installation avec libv8 (condition requise pour therubyracer):

Installation de libv8 (3.3.10.3) avec les extensions natives /usr/local/rvm/rubies/Ruby-1.9.3-head/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block dans build_extensions ': ERROR: Failed 
 construire une extension native de gem. (Gem :: Installer :: ExtensionBuildError) 

 /usr/local/rvm/rubies/Ruby-1.9.3-head/bin/Ruby extconf.rb 
 Vérification de Python ... *** extconf.rb a échoué *** 
 Impossible de créer le fichier Make en raison de pour une raison quelconque, probablement le manque de 
 bibliothèques et/ou en-têtes nécessaires. Consultez le fichier mkmf.log pour plus de détails 
 Vous pouvez avoir besoin d'options de configuration.

J'ai trouvé le rapport issue sur le site therubyracer github et il suggère de désinstaller et de réinstaller libv8, mais cela ne fonctionne pas sur ma machine Ubuntu 11.04. Des idées - ou suis-je coincé avec l'ancienne version pendant un moment?

26
emrass

Essayez celui-ci pendant un petit moment:

gem 'therubyracer'
gem 'libv8', '3.16.14.3'

Devrait aider.

En outre, c'est mieux avec un nouvel ensemble: gem install bundler --pre

29
Dmitry Polushkin

J'ai eu un problème similaire sur mon bon vieil Ubuntu 10.04 (x64)

Après avoir mis à jour le projet, Gemfile avait ces joyaux

  gem 'libv8', '~> 3.11.8'
  gem "therubyracer", '>= 0.11.0beta1', :require => 'v8'

Mais quand j'ai lancé 'bundle install', j'ai eu une erreur

Installing therubyracer (0.11.0beta1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/sseletskyy/.rvm/rubies/Ruby-1.9.3-p194/bin/Ruby extconf.rb 
checking for main() in -lpthread... yes
creating Makefile

make
compiling array.cc
compiling script.cc
compiling object.cc
compiling constants.cc
compiling signature.cc
compiling value.cc
compiling locker.cc
compiling init.cc
compiling heap.cc
compiling date.cc
compiling message.cc
compiling accessor.cc
compiling context.cc
compiling exception.cc
compiling backref.cc
compiling trycatch.cc
compiling gc.cc
compiling handles.cc
compiling stack.cc
compiling template.cc
compiling function.cc
compiling primitive.cc
compiling rr.cc
compiling v8.cc
compiling invocation.cc
compiling string.cc
compiling external.cc
compiling constraints.cc
linking shared-object v8/init.so
/home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory
collect2: ld returned 1 exit status
make: *** [init.so] Error 1


Gem files will remain installed in /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection.
Results logged to /home/sseletskyy/.rvm/gems/Ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out
An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0beta1'` succeeds before bundling.

Voici une liste des étapes qui ont fonctionné pour moi pour résoudre ce blocage rapidement 

  1. Désinstallez toutes les versions de gems 'libv8' et 'therubyracer'

    > gem désinstaller therubyracer

    > gem désinstaller libv8

  2. Installez therubyracer manuellement

    > bijou installer therubyracer

    Récupération: libv8-3.3.10.4-x86_64-linux.gem (100%) Récupération: therubyracer-0.10.1.gem (100%) Construire des extensions natives. Ça pourrait prendre un moment... Installation réussie de libv8-3.3.10.4-x86_64-linux Therubyracer-0.10.1 .__ installé avec succès. 2 gemmes installées Installation de la documentation de ri pour libv8-3.3.10.4-x86_64-linux ... Installation de la documentation ri pour therubyracer-0.10.1 ... Installation de la documentation RDoc pour libv8-3.3.10.4-x86_64-linux ... Installation de la documentation RDoc pour therubyracer-0.10.1 ...

  3. Vérifier les versions des gemmes installées

    > liste de gemmes | grep libv

    libv8 (3.3.10.4 x86_64-linux)

    > liste de gemmes | Grep Therubyracer

    therubyracer (0.10.1)

  4. Définissez ces versions dans Gemfile et exécutez 

    > installation groupée

  5. Résumé. Bien, je comprends que dans mon cas, je n’ai pas utilisé les dernières versions et que cela pourrait être mauvais pour des raisons de compatibilité. Mais au moins je pourrais continuer le développement. 

28
Serge Seletskyy

Ubuntu 11.04

gem "therubyracer", '0.11.1'
gem 'libv8'
  1. Désinstaller therubyracer et libv8 gem

  2. Mettre à jour la version de la gem bundler

  3. Installer le paquet lib8-dev

    Sudo apt-get installez libv8-dev

  4. Puis lancez ceci

    Sudo-app install libmagickcore-dev libmagickwand-dev

  5. Maintenant, installez therubyracer manuellement

    bijou installer therubyracer

  6. Il installera therubyracer et libv8 pour vous.

  7. Maintenant, lancez l'installation du paquet

Toutes les étapes ci-dessus ont résolu mon problème :)

7
rohitkadam19

J'ai rencontré le même problème récemment. Voici quelques informations utiles du Guide de démarrage du logiciel Rails de RoR.org:

La compilation de CoffeeScript vers JavaScript nécessite un runtime JavaScript et l'absence d'un runtime vous donnerait une erreur execjs. Généralement, Mac OS X et Windows sont livrés avec un runtime JavaScript installé. Rails ajoute la gemme therubyracer à Gemfile dans une ligne commentée pour les nouvelles applications et vous pouvez supprimer le commentaire si vous en avez besoin. therubyrhino est le runtime recommandé pour les utilisateurs JRuby et est ajouté par défaut à Gemfile dans les applications générées sous JRuby. Vous pouvez rechercher toutes les exécutions prises en charge sur ExecJS.

D'après ce que j'ai lu ailleurs, il semble que le support de Windows pour la gomme therubyracer n'existe pas dans la version '3.3.10.4' (éventuellement dans une version plus récente, il ne l'a pas encore été). J'ai installé Python 2.7 et je l'ai compilé, mais vous obtenez toujours des erreurs plus tard au cours du processus d'installation de l'environnement.

Donc, cela revient à ceci. Consultez la documentation therubyracer ici . 'therubyracer' fournit ces fonctionnalités (:

  • Evaluez le Javascript avec dans Ruby 
  • Intégrez vos objets Ruby dans le monde Javascript
  • Manipuler des objets JavaScript et appeler des fonctions JavaScript à partir de Ruby
  • API compatible avec The Ruby Rhino (pour JRuby: http://github.com/cowboyd/therubyrhino )

Si vous EXIGEZ ABSOLUMENT ces fonctionnalités, vous devez passer à * nix et abandonner Windows pour un environnement de développement/production. Sinon, vous pouvez faire ce que j'ai fait et choisir de ne pas installer 'therubyracer' ou 'libv8' (supprimé de mon Gemfile). Je ne compte pas beaucoup sur JavaScript avec le site sur lequel je rencontre ce problème. J'ai donc ignoré les deux gemmes et tout semble bien aller (jusqu'à présent).

J'espère que cela aide quelqu'un d'autre dans le besoin!

1
TwoByteHero

Ubuntu 12.04

gem 'libv8', '3.11.8.3'
gem 'therubyracer', '0.11.0beta5'

Spécifier les versions ci-dessus a résolu mon problème avec therubyracer.

Aussi, comme suggéré ci-dessus, j'ai utilisé le dernier bundle:

gem install bundler --pre
1
Andrei

Assurez-vous de mentionner Ruby dans votre Gemfile

gem 'therubyracer', :platform => :Ruby

puis exécutez bundle update.

0
sebastianwagner

L’utilisation de ces commandes de terminal l’a corrigé pour moi sur Ubuntu 16.04

Sudo apt-get install g++
Sudo apt-get install build-essential
0
user3487016