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 degcc
en específico?
¡¡Gracias!!
EDITAR:
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.También probé las variables de entorno
CC
,CXX
yCPP
como se describe here , aunque no creo que tenga ningún efecto ya que ya estaba recogiendo mi compiladorgcc 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