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?
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
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
Désinstallez toutes les versions de gems 'libv8' et 'therubyracer'
> gem désinstaller therubyracer
> gem désinstaller libv8
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 ...
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)
Définissez ces versions dans Gemfile et exécutez
> installation groupée
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.
Ubuntu 11.04
gem "therubyracer", '0.11.1'
gem 'libv8'
Désinstaller therubyracer et libv8 gem
Mettre à jour la version de la gem bundler
Installer le paquet lib8-dev
Sudo apt-get installez libv8-dev
Puis lancez ceci
Sudo-app install libmagickcore-dev libmagickwand-dev
Maintenant, installez therubyracer manuellement
bijou installer therubyracer
Il installera therubyracer et libv8 pour vous.
Maintenant, lancez l'installation du paquet
Toutes les étapes ci-dessus ont résolu mon problème :)
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 (:
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!
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
Assurez-vous de mentionner Ruby dans votre Gemfile
gem 'therubyracer', :platform => :Ruby
puis exécutez bundle update
.
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