43 votes

gem install libv8 --version '3.11.8.17' sur ruby (Windows)

Le problème est le suivant.

Error installing libv8:
ERROR: Failed to build gem native extension.

    D:/Ruby193/bin/ruby.exe extconf.rb
    creating Makefile
    The system can not find the specified path

        D:Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.17/ext/libv8/builder.rb:49:in'setup_python!':libv8 requires python 2 to be installed in order to build,but it is currently not available (RuntimeError)
             from D:Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.17/ext/libv8/builder.rb:35:in 'block in build_libv8!'
             from D:Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.17/ext/libv8/builder.rb:34:in 'chdir'
             from D:Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.17/ext/libv8/builder.rb:34:in 'build_libv8!'
             from D:Ruby193/lib/ruby/gems/1.9.1/gems/libv8-3.11.8.17/ext/libv8/builder.rb:34:in 'install!'
             from extconf.rb:7: in '<main>'
I have installed the python27 and add the path.

python --version
Python 2.7.4

Ensuite, je vérifie le code comme suit.

 def setup_python!
      # If python v2 cannot be found in PATH,
      # create a symbolic link to python2 the current directory and put it
      # at the head of PATH. That way all commands that inherit this environment
      # will use ./python -> python2
      if python_version !~ /^2/
        unless system 'which python2 2>&1 > /dev/null'
          fail "libv8 requires python 2 to be installed in order to build, but it is currently #{python_version}"
        end
        `ln -fs #{`which python2`.chomp} python`
        ENV['PATH'] = "#{File.expand_path '.'}:#{ENV['PATH']}"
      end
    end

J'ai essayé d'installer la ligne de commande Linux sur Windows pour que le "ln -fs" fonctionne, mais le problème n'a toujours pas été résolu.

162voto

Periback Points 1829

Essayez ça :

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

Cette erreur était un problème jusqu'à ce que je lance la commande ci-dessus :)

11voto

Vieenay Points 396

Essayez avec https://github.com/hiranpeiris/therubyracer_for_windows . J'avais résolu le même problème sur ma machine Windows en utilisant cette solution.

4voto

rony36 Points 1092

Suivez les étapes suivantes :

  1. Obtenez le Python approprié d'ici http://python.org/download/
  2. Définir le chemin avec cette commande SET PATH=<ruby directory>;<python directory> (par exemple SET PATH=C:\Ruby192\bin;C:\Python27 )

Et maintenant, installez votre gemme de désir

gem install libv8

J'ai trouvé cette solution dans ici .

Je me demande si vous obtenez cette erreur pour la version. Essayez ceci :

gem install libv8 --version 3.11.8.0

2voto

aenw Points 355

Assurez-vous que vous pouvez effectivement exécuter le " which "sur votre système. Elle n'est pas native de Windows.

" which " devrait être installé si vous avez installé DevKit ou RailsInstaller. Cependant, je rencontre également ce problème (j'ai également plusieurs versions de python installées et qui fonctionnent), et je viens de découvrir que mon fichier which sous le commandement de DevKit... (et celui sous RailsInstaller...) ne fonctionne pas réellement.

L'équivalent proche de Windows est " where ". Vous devez donc exécuter " WHERE which "pour savoir si vous avez la commande "which" sur votre système.

Cela ne fait pas fonctionner 'therubyracer', ou les problèmes avec libv8 disparaissent, mais c'est une partie du puzzle.

(J'ai envoyé le problème aux gens de msysGit pour voir ce qu'ils disent de la commande 'which' non exécutée).

0voto

Rots Points 1893

Je peux me tromper, mais je pense que le problème vient de cette ligne :

unless system 'which python2 2>&1 > /dev/null'

Elle recherche python2 alors qu'en fait la commande pour python est simplement python .

Essayez peut-être l'aliasing python à python2 .

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