70 votes

"gem install therubyracer` échoue sur Mac OS X Lion

J'apprécierais un peu d'aide dans l'obtention gem install therubyracer de travail. Voici le message d'erreur:

$ gem install therubyracer
Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
    ERROR: Failed to build gem native extension.

        /Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
    --with-objclib
    --without-objclib
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)

Voici quelques exemples de mesures que j'ai couru à l'avant de l'erreur. Ils ont travaillé très bien:

$ gem install libv8
$ brew install v8

Mon environnement est:

  • Mac OS X Lion 10.7.4
  • ruby 1.9.3p194 (2012-04-20 révision 35410) [x86_64-darwin11.4.0] (via rvm)
  • V8 version 3.9.24 (via homebrew)

106voto

David James Points 8344

Cela a fonctionné pour moi:

$ gem uninstall libv8
$ gem install therubyracer

(Un grand merci à http://www.ruby-forum.com/topic/4306127)

43voto

Ken Mazaika Points 724
gem uninstall libv8
brew install v8
gem install therubyracer

40voto

Mars Redwyne Points 455

Mais, pourquoi est-ce qui se passe, vous demandez-vous? Et pourquoi ne désinstallation libv8 et réinstallation therubyracer résoudre le problème?

La réponse est en bas du message d'erreur (à partir d'orig post). Ignorer les choses à propos de l'

probably lack of necessary libraries and/or headers

C'est une hypothèse erronée par celui qui a écrit ce message d'erreur. En bas, vous voyez ce que Ruby a à dire à ce sujet:

undefined method `include_path' for Libv8:Module

Dans mon cas, j'ai essayé d'installer therubyracer-0.9.8 avec bundle install, et pour une raison quelconque, il a été d'essayer d'utiliser ma copie de libv8-3.11.8.13, qui avait été installé à un certain point, sans doute comme une dépendance de certains autres gem.

Je ne sais pas pourquoi il a été d'essayer d'utiliser la version la plus récente, car therubyracer.gemspec contient s.add_dependency "libv8", "~> 3.3.10". Et mon Gemfile.lock dit d'utiliser libv8 (3.3.10.2). Mais hélas, c'est en effet ce qui se passait.

Et c'est vrai qu' Libv8:Module ne pas avoir la méthode include_path en libv8-3.11.8.13, mais il n' en libv8-3.3.10.2

C'est pourquoi la désinstallation de l' ensemble de vos versions de libv8 puis de réinstaller therubyracer travaux. Parce que toutes les versions de l' libv8 qui n'ont pas la méthode include_path sont complètement supprimé, et l' libv8 qui n'ont que la méthode include chemin est réinstallé lors de la réinstallation de l' therubyracer.

15voto

Abe Petrillo Points 1198

Compte tenu aucun si ce qui précède a travaillé à 100% pour moi, je pensais que je poste ce n' (dans le cadre d'un rails de projet):

gem uninstall libv8
bundle update therubyracer

Ce fait que j'ai téléchargé la dernière therubyracer, et également une version plus récente d' libV8, et semblent pour résoudre les multiples problèmes que j'ai été frappé, de l'absence de libv8.un fichiers, indéfinis méthodes.

12voto

szpapas Points 205

Enfin je utiliser therubyracer 0.11.0beta5 comme une solution.

À l'aide de therubyracer (de 0,11.0beta5)

ajouter la suite sur Gemfile

gem 'therubyracer', '~> 0.11.0beta5'
group :libv8 do
  gem 'libv8', "~> 3.11.8"
end

ensuite, bundle install

Mac OS x 10.8 Moutain Lion

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