ruby on rails - software - instalación/actualización de paquetes: la instalación de libv8(therubyracer) falla(con extensiones nativas)
ruby on rails official website (7)
Hace poco quise actualizar mi paquete de gemas pero tuve problemas de instalación con libv8 (requisito para therubyracer):
Installing libv8 (3.3.10.3) with native extensions /usr/local/rvm/rubies/ruby-1.9.3-head/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions'': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/local/rvm/rubies/ruby-1.9.3-head/bin/ruby extconf.rb Checking for Python...*** 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.
Encontré el informe del problema en el sitio github therubyracer y sugiere desinstalar y reinstalar libv8, pero esto no funciona en mi máquina Ubuntu 11.04. ¿Alguna idea - o estoy atrapado con la versión anterior por un tiempo?
Asegúrese de hacer referencia al rubí en su Gemfile
gem ''therubyracer'', :platform => :ruby
y luego ejecute la bundle update
.
Intente eso por un rato:
gem ''therubyracer''
gem ''libv8'', ''3.16.14.3''
Debería ayudar.
También es mejor con un nuevo bundler: gem install bundler --pre
Me he encontrado con el mismo problema recientemente. Aquí hay un poco de información útil de la Guía de Primeros Pasos con Rieles de RoR.org:
La compilación de CoffeeScript a JavaScript requiere un tiempo de ejecución de JavaScript y la ausencia de un tiempo de ejecución le dará un error execjs. Por lo general, Mac OS X y Windows vienen con un runtime de JavaScript instalado. Rails agrega la gema therubyracer a Gemfile en una línea comentada para nuevas aplicaciones y puede descomentar si lo necesita. therubyrhino es el tiempo de ejecución recomendado para usuarios de JRuby y se agrega de forma predeterminada a Gemfile en las aplicaciones generadas bajo JRuby. Puede investigar sobre todos los tiempos de ejecución admitidos en ExecJS.
Según lo que he leído en otra parte, parece que el soporte de Windows para la gema therubyracer no se encuentra en la versión ''3.3.10.4'' (posiblemente en una versión más reciente, no leí hasta ahora). Instalé Python 2.7 y lo compilé, pero aún así obtendrás errores más tarde durante el proceso de configuración del entorno.
Así que todo se reduce a esto. Echa un vistazo a la documentación de therubyracer here . ''therubyracer'' proporciona estas características (:
- Evaluar Javascript de con en Ruby
- Inserta tus objetos de Ruby en el mundo de Javascript
- Manipule objetos JavaScript y llame a funciones JavaScript desde Ruby
- API compatible con The Ruby Rhino (para JRuby: http://github.com/cowboyd/therubyrhino )
Si REQUIERE ABSOLUTAMENTE estas características, debe cambiar a * nix y eliminar Windows para un entorno de desarrollo / producción. De lo contrario, puedes hacer lo que hice y elegir no instalar ''therubyracer'' o ''libv8'' (eliminado de mi Gemfile). No confío mucho en JavaScript con el sitio con el que estoy experimentando este problema, así que simplemente ignoré ambas gemas y todo parece estar bien (hasta ahora).
Espero que esto ayude a alguien más en necesidad!
Tuve un problema similar en mi viejo y viejo Ubuntu 10.04 (x64)
Después de actualizar el proyecto, Gemfile tenía esas gemas.
gem ''libv8'', ''~> 3.11.8''
gem "therubyracer", ''>= 0.11.0beta1'', :require => ''v8''
Pero cuando ejecuté ''bundle install'' obtuve un error
Installing therubyracer (0.11.0beta1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/sseletskyy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lpthread... yes
creating Makefile
make
compiling array.cc
compiling script.cc
compiling object.cc
compiling constants.cc
compiling signature.cc
compiling value.cc
compiling locker.cc
compiling init.cc
compiling heap.cc
compiling date.cc
compiling message.cc
compiling accessor.cc
compiling context.cc
compiling exception.cc
compiling backref.cc
compiling trycatch.cc
compiling gc.cc
compiling handles.cc
compiling stack.cc
compiling template.cc
compiling function.cc
compiling primitive.cc
compiling rr.cc
compiling v8.cc
compiling invocation.cc
compiling string.cc
compiling external.cc
compiling constraints.cc
linking shared-object v8/init.so
/home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory
collect2: ld returned 1 exit status
make: *** [init.so] Error 1
Gem files will remain installed in /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection.
Results logged to /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out
An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v ''0.11.0beta1''` succeeds before bundling.
Aquí hay una lista de pasos que me sirvieron para resolver ese bloque rápidamente.
Desinstala todas las versiones de gemas ''libv8'' y ''therubyracer''
> gema desinstalar therubyracer
> gema desinstalar libv8
Instalar therubyracer manualmente
> gema instalar therubyracer
Obtención: libv8-3.3.10.4-x86_64-linux.gem (100%) Obtención: therubyracer-0.10.1.gem (100%) Creación de extensiones nativas. Esto podría llevar un tiempo ... Instalar correctamente libv8-3.3.10.4-x86_64-linux Instalar exitosamente therubyracer-0.10.1 2 gemas instaladas Instalar la documentación de ri para libv8-3.3.10.4-x86_64-linux ... Instalar la documentación de ri para therubyracer -0.10.1 ... Instalación de la documentación de RDoc para libv8-3.3.10.4-x86_64-linux ... Instalación de la documentación de RDoc para therubyracer-0.10.1 ...
Consultar versiones de gemas instaladas.
> lista de gemas | grep libv
libv8 (3.3.10.4 x86_64-linux)
> lista de gemas | grep therubyracer
therubyracer (0.10.1)
Establecer esas versiones en Gemfile y ejecutar
> paquete de instalación
Resumen. Bueno, entiendo que en mi caso no utilicé las últimas versiones y podría ser malo por motivos de compatibilidad. Pero al menos podría seguir desarrollándome.
Ubuntu 11.04
gem "therubyracer", ''0.11.1''
gem ''libv8''
Desinstalar therubyracer y libv8 gema
Actualiza la versión de la gema de bundler
Instala el paquete lib8-dev
sudo apt-get install libv8-dev
Entonces ejecuta esto
sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses libplt lpp lpp lpp lpp lp libmagickcore-dev libmagickwand-dev
Ahora instale therubyracer manualmente
gema instalar therubyracer
Instalará therubyracer y libv8 para usted.
Ahora ejecuta bundle install
Todos los pasos anteriores resolvieron mi problema :)
Ubuntu 12.04
gem ''libv8'', ''3.11.8.3''
gem ''therubyracer'', ''0.11.0beta5''
Especificar las versiones anteriores solucionó mi problema con therubyracer.
También como alguien sugerido anteriormente, usé el último bundler:
gem install bundler --pre
Usando estos comandos de terminal me lo arreglé en Ubuntu 16.04
sudo apt-get install g++
sudo apt-get install build-essential