ruby gcc osx-mavericks therubyracer libv8

therubyracer-Gem:: Ext:: BuildError: ERROR: No se pudo construir la extensión nativa gema



gcc osx-mavericks (9)

Acabo de ejecutar la actualización del paquete, y funcionó para mí.

Obs .: Usando Ruby 2.3.0

Estoy tratando de instalar las siguientes versiones de gemas en Mavericks

  • libv8 (3.16.14.3)
  • therubyracer (0.12.1)

Obviamente las gemas therubyracer dependen de libv8.

1) Instalando libv8

¿Qué es libv8? Mi parte de la investigación parece indicar que es una especie de biblioteca de JavaScript utilizada por Google Chrome?

Estaba teniendo problemas para instalarlo, pero esta gran publicación tenía tanto mi error como una respuesta bien explicada sobre cómo evitarlo.

Así que instalé libv8 con

gem install libv8 -- --with-system-v8

Tengo entendido que esto instala la gema pero usa la instalación de mi sistema local de la biblioteca v8 en lugar de ... ¿la versión que viene con la gema? De cualquier manera, fue exitoso.

2) Instalando therubyracer

Durante el siguiente paso, tuve problemas para instalar la gema de therubyracer . No estoy seguro de qué es lo que hace esta gema, solo que es una dependencia de un proyecto de rieles que estoy intentando bundle install .

Me da el siguiente error:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb checking for main() in -lpthread... yes checking for main() in -lobjc... yes checking for v8.h... no *** 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/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby --with-pthreadlib --without-pthreadlib --with-objclib --without-objclib --enable-debug --disable-debug --with-v8-dir --without-v8-dir --with-v8-include --without-v8-include=${v8-dir}/include --with-v8-lib --without-v8-lib=${v8-dir}/lib /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in ''configure'': You have chosen to use the version of V8 found on your system (Libv8::Location::System::NotFoundError) and *not* the one that is bundled with the libv8 rubygem. However, it could not be located. please make sure you have a version of v8 that is compatible with 3.16.14.3 installed. You may need to special --with-v8-dir options if it is in a non-standard location thanks, The Mgmt from /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'' from extconf.rb:32:in `<main>'' extconf failed, exit code 1 Gem files will remain installed in /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/gems/therubyracer-0.12.1 for inspection. Results logged to /Users/jeeves.butler/.rvm/gems/ruby-1.9.2-p290/extensions/x86_64-darwin-13/1.9.1/therubyracer-0.12.1/gem_make.out

Por lo que puedo deducir, elegí instalar libv8 usando mi biblioteca V8 local en lugar de lo que se proporcionaba con libv8 , pero ahora esa instalación local no se pudo ubicar.

  • ¿Cómo puedo verificar si realmente tengo V8 instalado y cómo lo encuentro?
  • Probé algunos de los indicadores especificados, ninguno de ellos parecía apuntar la gema al directorio de instalación correcto
  • Este podría ser un tema separado, pero ¿qué es extconf.rb ? Lo he visto en algunos lugares. ¿Y qué está tratando de hacer con el compilador de gcc en específico?

¡¡Gracias!!

EDITAR:

  1. Intenté esta solución de desinstalar libv8 y volver a instalar a través de brew install . También se mencionó en un par de preguntas similares. Sin suerte.

  2. También probé las variables de entorno CC , CXX y CPP como se describe here , aunque no creo que tenga ningún efecto ya que ya estaba recogiendo mi compilador gcc v4.6 .


Después de romperme la cabeza por casi dos días, esto funcionó para mí.

rvm install 2.2.2 gem install rails bundle install


Encontré una solución al problema anterior.

Esto es más una compatibilidad entre libv8 y therubyracer.

gem install libv8 -v ''3.3.10.4'' -- --with-system-v8 gem install therubyracer -v ''0.10.2''

Esto debería funcionar bien ya que ambas versiones son compatibles conmigo. Inicialmente estaba tratando de instalar la versión 0.12.0 para therubyracer y estaba enfrentando el problema. Una vez que cambié a la versión 0.10.2, todo funcionó bien.

Mi sistema operativo actual: Mavericks


Este paso funcionó para mí.

Sistema operativo: Maverick Ruby: 2.1.1

gem uninstall libv8 gem install therubyracer -v ''0.11.3'' gem install libv8 -v ''3.11.8.13'' -- --with-system-v8


Las respuestas anteriores no funcionaron para mí; la configuración de mi paquete tiene disable-shared-gems habilitado que causa problemas adicionales.

Estoy usando Yosemite 10.10.1, Rails 3.2.x y Ruby 1.9.3p550.

El siguiente fragmento en mi bin/setup ha solucionado el problema.

if ! bundle show therubyracer; then bundle config build.libv8 --with-system-v8 gem install --install-dir vendor/bundle libv8 -v 3.16.14.7 gem install libv8 -v 3.16.14.7 gem install --install-dir vendor/bundle therubyracer fi


Me di cuenta de que cuando nos encontramos con un problema:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension

Luego debe instalar build-essential

sudo apt install build-essential

Funciona para mí con los problemas de instalación de mini_race.


Para aquellos que enfrentan este problema en OS X El Capitán, esta solución de un hilo temático de therubyracer fue lo que finalmente funcionó para mí:

brew tap homebrew/versions brew install v8-315 gem install libv8 -v ''3.16.14.13'' -- --with-system-v8 gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315 bundle install

También había ejecutado brew install gcc antes, pero no estoy seguro de si esto era realmente necesario.


Pruebe primero desinstalar la gema libv8, luego instale rubyracer, y luego libv8

gem uninstall libv8 gem install therubyracer gem install libv8 -- --with-system-v8


Tertom''s solución de Tertom publicada en github lo resolvió para mí, después de haber probado todas las otras soluciones propuestas en el tema respectivo de Github y aquí.
Tenía la misma configuración de sistema.
Esto está en el capitán, por lo que no es una respuesta exacta a la pregunta, pero las personas pueden encontrar útil esta información.

Lo estoy citando aquí para la visibilidad:

Resuelto el mismo problema

  • MacOS 10.11.2
  • ruby 1.9.3
  • libv8 3.16.14.13
  • therubyracer 0.12.2

-

brew tap homebrew/versions brew install v8-315 brew link --force v8-315 bundle install brew unlink v8-315

Si también no puedes instalar libv8,

gem install libv8 --with-system-v8

o

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