Error al instalar libv8: ERROR: no se pudo construir la extensión nativa de la gema

183

Hice un proyecto de rieles con

rails new test_bootstrap.

triunfado

se movió al directorio del proyecto y agregó las gemas

gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"

y correr

bundle install

después de eso, tengo este error.

Installing libv8 (3.16.14.3)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
creating Makefile
지정된 경로를 찾을  없습니다.                                                          지정된 경로를 찾을 
없습니다.                                                          지정된 경로를 찾을  없습니다.

c:/RailsInstaller/Ruby1.9.3/lib/ruby/ge
ms/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:58:in `setup_python!': libv8 requires
python 2 to be installed in order to build, but it is currently not available (RuntimeErr
or) from c:/RailsInstaller/Ruby1.9.
3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/libv8/builder.rb:42:in `block in build_lib
v8/builder.rb:42:in `block in build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `chdir'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/builder.rb:40:in `build_libv8!'
        from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ext/lib
v8/location.rb:24:in `install!'
        from extconf.rb:7:in `<main>'                                                    


Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/l
ibv8-3.16.14.3 for inspection.
Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/libv8-3.16.14.3/ex
t/libv8/gem_make.out
An error occurred while installing libv8 (3.16.14.3), and Bundler cannot
continue.
Make sure that `gem install libv8 -v '3.16.14.3'` succeeds before bundling.

lo siento por algunos coreanos. Dice: No puede encontrar el camino elegido o algo así.

e intenté ejecutar este comando

gem install libv8 -v '3.16.14.3' 

arrojando el mismo error.

Presente de no poder
fuente
¿Has instalado Devkit github.com/oneclick/rubyinstaller/wiki/Development-Kit
Amit Thawait
Encontré esto, tengo que instalar Python y establecer la ruta. y ahora funciona Espero que la gente resuelva con este hilo. stackoverflow.com/questions/10812696/…
Canna
No parezca un caballo de regalo en la boca :) De la falta de soporte de seguridad de Debian para el ecosistema en torno a libv8 y Node.js : "La plataforma Node.js está construida sobre libv8-3.14, que experimenta un alto volumen de seguridad problemas, pero actualmente no hay voluntarios dentro del proyecto o el equipo de seguridad lo suficientemente interesado y dispuesto a pasar la gran cantidad de tiempo requerido para detener esos problemas entrantes ... "
jww

Respuestas:

612

prueba este:

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

Nota: Debido a que libv8 es la interfaz para el motor V8 utilizado por therubyracer, es posible que deba usar libv8, incluso si ya tiene instalado V8. Si desea usar su propia instalación de V8, en lugar de tenerla construida para usted, use la --with-system-v8opción.

Para obtener más información, puede consultar la documentación de libv8 en github

Gopal S Rathore
fuente
66
Yo uso eso Se compila bien, pero todavía tengo errores al ejecutar 'bundle'
Sucrenoir
10
Esta parte funcionó pero todavía recibo un error al instalar el termubirador. Me da un error similar al que estaba obteniendo antes con libv8 "asegúrese de que tal y tal tenga éxito antes de la agrupación", pero cuando intento ejecutar 'gem install therubyracer' me sale "No se pudo construir la extensión nativa de la gema". error
sixty4bit
1
Lo desinstalo y lo reinstalo con el argumento dado anteriormente como root. No funciona. Mi error es An error occurred while installing libv8 (3.16.14.3), and Bundler cannot continue.y Bundler::GemspecError: Could not read gem at /home/gitlab/gitlab/vendor/bundle/ruby/2.1.0/cache/libv8-3.16.14.3-x86_64-linux.gem. It may be corrupted. elimino toda la carpeta de caché y vuelvo a ejecutar bundle install --full-index --deployment --without development test postgres aws. Trabajos.
Nick Dong
1
¡Perfecto! gem install libv8 -v '3.16.14.3' -- --with-system-v8funcionó para mí en OS X 10.11.
Jagdeep Singh
Descubrí que no podía encontrar un sistema v8, por lo que fue brew install v8útil. Siga las instrucciones en esta respuesta aquí: stackoverflow.com/questions/24081473/…
redfox05
154

Cómo resolver el problema de libv8 / therubyracer

Encontré un problema similar en el que después de instalar libv8, se produce un error al instalar therubyracer. Aquí está mi solución:

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
   
$ bundle install

- ver error al instalar therubyracer -

$ gem uninstall libv8

$ brew install v8

$ gem install therubyracer

$ bundle install

- ver error al instalar libv8 -

$ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Arpit Shah
fuente
44
los pasos mencionados en esta respuesta funcionan mejor, primero necesitamos instalar gem libv8, desinstalar para instalar el sistema v8 antes de instalar gem therubyracer (gem install libv8 con el indicador --with-system-v8) :)
Parthan
1
No creo que necesites el primer paso. Antes de ejecutar la instalación del paquete, use brew para instalar el sistema v8. Luego instale la gema therubyracer y la gema libv8 a mano. y ejecuta la instalación del paquete. Pero aún no lo he probado.
gitb
Esto también funcionó para mí en OSX 10.10.5 con ruby ​​2.1.2p95 para libv8 3.16.14.11
Michael Oakley
3
Recuerde cambiar '3.16.14.3' a cualquier versión que el paquete esté intentando ejecutar o no funcionará cuando ejecute la instalación del paquete
Jonathon Blok
También trabajó para 10,12 (Sierra) con Ruby 1.9.3 para libv '3.16.14.11'
peregrino
48

Con homebrew esto me ayuda a resolver este error.

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

Visto en cuestiones de Rubyracer Github.

codificación adicto
fuente
Esto funcionó para mí, aunque instala una versión anterior de v8 a través de brew.
Sanjay
1
Este error me está volviendo loco cada vez que cambio la versión ruby. Creo que puedes intentar ajustar la opción de versión v8 y la ruta para obtenerla.
Codificación adicto
solo esta solución funciona para mí, gracias por la solución
AMIC MING
@codingaddicted ¿alguna vez te imaginas que este error sigue ocurriendo? Actualicé ruby ​​and rails para un nuevo proyecto y siempre obtengo este error cuando abro un nuevo shell para mi proyecto anterior. Se supone que rvm maneja estos problemas de versión, pero necesito seguir haciendo sus comandos arriba cada vez que abro un nuevo shell para mi proyecto anterior.
iamse7en
@ iamse7en, por lo que recuerdo, tengo que ejecutarlos para cada versión de ruby. Estaba viendo este error cuando actualicé ruby ​​(pero no he hecho tanto ruby ​​en los últimos meses y no jugué con diferentes versiones).
Codificación adicto
43

Probé la solución que aparece en el comando anterior, que se ve muy bien para instalar gemas individuales, pero para los usuarios de paquetes: debe usar la configuración de paquete

Utilizar

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

y

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

configurar el paquete para tomar los parámetros que se utilizarán al instalar gema específica

Anand Chavan
fuente
66
Por alguna razón, mi configuración de paquete requirió lo siguiente para encontrar la compilación correcta (que utiliza la instalación de preparación de la respuesta de codificación de adictos a continuación) bundle config build.therubyracer --with-v8-dir=/usr/local/opt/v8-315
iturgeon
7

No creo que necesites therubyracergema en Windows. Es un tiempo de ejecución de JavaScript que utiliza el motor V8. Por lo tanto, está haciendo un intento de instalación libv8.

Puedes quitar la gema de tu Gemfile de forma segura.

Rails se complace en utilizar cualquier tiempo de ejecución que pueda encontrar. execjs,nodejs etc. son todas las opciones posibles.

Microsoft ya incorpora el tiempo de ejecución JScript para javascript en Windows, y Rails lo usa. Mira esto para más

Tornasol
fuente
6

Otra solución para solucionar el problema es separarlos en el Gemfile

group :production do
 gem 'libv8', '~> 3.11.8.3'
 gem 'therubyracer', :platform => :ruby
end

Y luego ejecute el comando de paquete : instalación de paquete - sin producción

Arman Ortega
fuente
Esto funciona bien en combinación con la respuesta de @Litmus porque muestra cómo puede retener la gema en la configuración (que probablemente será relevante para la implementación) sin romper la configuración de desarrollo en Windows.
glenatron
3

Tampoco pude instalar esta gema en lugar de usar

--with-system-v8

una vez intente hacer la actualización del paquete que funcionó bien para mí

Rishav Bhardwaj
fuente
3

encontré esto en github

suponiendo que haya probado los pasos mencionados anteriormente, instaló v8-315 y v8 a través de brew.

brew unlink v8
brew link --force v8-315
gem install therubyracer -v '0.12.2' -- --with-system-v8
Sojan V Jose
fuente
2

Funciona para mi. Pon eso en tu Gemfile

gema 'libv8', '~> 3.16.14.7'

Hrk
fuente
esta solución me llevan a bundle install --no-deploymenty luego bundle installtrabajó para mí
simo
2

Mi problema no estaba relacionado therubyraceren absoluto con solo libv8gema y, como señaló @ rishav-bhardwaj --with-system-v8, no funcionó, en lugar de eso tuve que ejecutar

bundle update

luego

bundle install

y finalmente

Bundle complete!

El error se ha ido!

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. Make sure that `gem install libv8 -v '3.16.14.7'` succeeds before bundling.

d1jhoni1b
fuente
1

En mi caso resolví esta situación requiriendo 'mini_racer', '~> 0.2.6' en mi Gemfile

Entonces el comando de instalación de paquete funcionó.

Tomás Radic
fuente
0

Probar con

gema "therubyracer", "~> 0.10.2" a Gemfile

E instalará la gema dependiente libv8 (3.3.10.4) y el problema de la falla de la extensión nativa de la gema de compilación se resolvió.

rahul patil
fuente
0

Se resolvió el 3.16.14.7problema de libv8 con el siguiente comando:

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

Y luego bundle installcompletado con éxito.

Faisal Raza
fuente
0

Creo que esto tiene menos que ver con libv8 y más con therubyracer.

Recibí el mismo error al ejecutar una instalación de paquete en una aplicación de rieles. Si ha encontrado esto de manera similar, intente instalar la gema fuera del paquete de la siguiente manera:

gem install therubyracer

luego ejecute el paquete de instalación. Espero que esto funcione para ti también.

Sean M
fuente
0

También tuve problemas para usar libv8y mini_racer. Resuelto el problema con

brew install v8

bundle update libv8 mini_racer

Utilizando las últimas versiones mini_racer 0.2.10y libv8 7.3.492.27funcionó a las mil maravillas.

anka
fuente
0

Probé los siguientes comandos en mi local, funcionó bien:

brew install v8@3.15
gem install libv8 -v 'YOUR_VERSION' -- --with-system-v8
gem install therubyracer -v 'YOUR_VERSION' -- --with-v8-dir=/usr/local/opt/v8@3.15
bundle install
Rintu George
fuente