Instalación de la gema libv8 en OS X 10.9+
rubygems osx-mavericks (16)
Cuando intenté la respuesta aceptada, libv8 se instalaría correctamente con gem install libv8
, pero la bundle install
fallaría en libv8. Creo que la bundle install
estaba intentando instalar una versión diferente de libv8. Pude encontrar una solución que funcionó para mí.
Necesitaba libv8 porque therubyracer depende de ello. Para instalarlo, noté la versión que no se pudo instalar en el registro de gem_make.out para therubyracer. (La ruta para el registro de gem_make.out
estará en el mensaje de error). En mi caso, era 3.16.14.7. (Esta versión probablemente cambiará con el tiempo, en caso de que estés leyendo esto dentro de tres años). Luego hice esto:
gem install libv8 -v 3.16.14.7 -- --with-v8-lib
<- note una bandera diferente de la respuesta aceptada
lo que permitió que esto funcione:
gem install therubyracer
lo que me permitió completar mi bundle install
.
Esto me funcionó en OSX Yosemite.
Estoy tratando de instalar libv8 3.16.14.3 pero obtengo un error en los Mavericks de OSX usando las últimas rvm y ruby-1.9.3-p125 estables.
Esta es la salida de ejecutar el comando ''gem install libv8'':
~/src(branch:master) » gem install libv8
Fetching: libv8-3.16.14.3.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
/Users/me/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
creating Makefile
Compiling v8 for x64
Using python 2.7.5
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
Using compiler: g++
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Unable to find a compiler officially supported by v8.
It is recommended to use GCC v4.4 or higher
libtool: unrecognized option `-static''
libtool: Try `libtool --help'' for more information.
make[1]: *** [/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a] Error 1
make: *** [x64.release] Error 2
/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:36:in `block in verify_installation!'': libv8 did not install properly, expected binary v8 archive ''/Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a''to exist, but it was not found (Libv8::Location::Vendor::ArchiveNotFound)
from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `each''
from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:35:in `verify_installation!''
from /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/location.rb:26:in `install!''
from extconf.rb:7:in `<main>''
GYP_GENERATORS=make /
build/gyp/gyp --generator-output="out" build/all.gyp /
-Ibuild/standalone.gypi --depth=. /
-Dv8_target_arch=x64 /
-S.x64 -Dv8_enable_backtrace=1 -Dv8_can_use_vfp2_instructions=true -Darm_fpu=vfpv2 -Dv8_can_use_vfp3_instructions=true -Darm_fpu=vfpv3
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/allocation.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/atomicops_internals_x86_gcc.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/bignum-dtoa.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/cached-powers.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/conversions.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/diy-fp.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/dtoa.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fast-dtoa.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/fixed-dtoa.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/once.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparse-data.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/preparser-api.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/scanner.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/strtod.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/token.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/unicode.o
CXX(target) /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/obj.target/preparser_lib/src/utils.o
LIBTOOL-STATIC /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/vendor/v8/out/x64.release/libpreparser_lib.a
Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3 for inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.3-p125@proj-rails3-ruby19/gems/libv8-3.16.14.3/ext/libv8/gem_make.out
Eliminar de Gemfile:
gema ''therubyracer'',: plataformas =>: rubí
En MAC-Yosemite con entorno RVM y versión ruby-2.1.1
gem install libv8 -v 3.16.14.3 -- --with-v8-lib gem install therubyracer
Funciona con la ayuda del comando anterior, puede confirmar esto.
Estaba usando una versión beta de Xcode para otro proyecto y había olvidado. Cambia de nuevo con xcode-select
. Algo como:
sudo xcode-select --switch /Applications/Xcode.app/
Esto es lo que funcionó para mí.
Reemplace 3.16.14.7
con su versión.
bundle install
gem install libv8 -v ''3.16.14.7'' -- --with-system-v8
bundle install
gem uninstall libv8 -v ''3.16.14.7'' -- --with-system-v8
brew install homebrew/dupes/apple-gcc42
export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2
bundle install
Esto se debe al hecho de que OS X 10.9+ está utilizando la versión 4.8 de GCC. Esto no se admite oficialmente en versiones anteriores de libv8 como se menciona en la solicitud de extracción ( https://github.com/cowboyd/libv8/pull/95 ). Intente subir la versión de libv8 en su Gemfile (o) una bundle update
debería ser suficiente. Espero que esto ayude.
Desde el libv8 readme
Traiga su propio V8
Debido a que libv8 es la interfaz para el motor V8 utilizado por therubyracer, es posible que necesite usar libv8, incluso si ya tiene V8 instalado. Si desea usar su propia instalación de V8, en lugar de tenerla creada para usted, use la opción --with-system-v8.
Usando RubyGems:
gema instala libv8 [-v YOUR_VERSION] - --with-system-v8
Usando Bundler (en tu Gemfile):
configuración de paquete build.libv8 --with-system-v8
Tenga en cuenta que si desea ejecutar su propio V8, debe instalar tanto V8 como sus encabezados (que se encuentran en libv8-dev para las distribuciones de Debian).
Trae tu propio compilador
Puede especificar un compilador de su elección configurando la variable de entorno CXX antes de la compilación, o agregando la opción --with-cxx = a la configuración del paquete:
configuración de paquete build.libv8 --with-cxx = clang ++
Editar:
Si el problema lo provoca therubyracer
, intente lo siguiente como sugiere rider_on_rails here :
gema desinstalar libv8
gema instala therubyracer -v YOUR_RUBY_RACER_VERSION
gema instala libv8 -v YOUR_VERSION - --with-system-v8
He enfrentado un problema similar en El Cap. Esto es lo que hice.
brew tap homebrew/dupes
brew install apple-gcc42
Y entonces,
export CC=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2
export CXX=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2
export CPP=/usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2
Finalmente,
brew uninstall v8
gem install libv8 -v 3.11.8.17 -- --with-system-v8
Intente con lo que resumí en esta pregunta: "gem install therubyracer -v ''0.10.2''" en osx mavericks no se está instalando
Funcionó para mí (OS X Mavericks)
La solución de El Capitán para mí:
$ brew install v8
$ gem install libv8 -v REQUIRED_LIBV8_VERSION -- --with-system-v8
Donde REQUIRED_LIBV8_VERSION
para mí fue 3.16.14.7
, pero debe verificar cuál es el que necesita en su paquete (este fue el de los rieles 4.2.5
)
Es posible que también deba ejecutar los comandos anteriores como superusuario (si sus gemas y las bibliotecas del sistema son globales)
Lo que realmente me funcionó fue actualizar ruby a 2.2.0, eliminar Gemfile.lock y volver a agruparlo.
¡Trabajado como un encanto!
Probé varias soluciones descritas en respuestas anteriores, pero descubrí que la ejecución del paquete (para instalar otras gemas faltantes) intentaría volver a compilar libv8 (a pesar de haberlo instalado con éxito usando --with-system-v8
) y por lo tanto sufrir Del mismo tema.
Finalmente, encontré que eliminar la gema libv8, recuperar el archivo de gema de rubygems y luego instalar manualmente el archivo .gem
con la .gem
--with-system-v8
funcionó para mí.
es decir
gem uninstall libv8
gem fetch libv8 -v LIBV8_VERSION
gem install libv8-LIBV_VERSION.gem -- --with-system-v8
bundle
¡Gracias a la respuesta de Gaurav Agarwal por guiarme por el camino correcto!
Puede intentar compilar e instalar la gema manualmente mediante el método mencionado en https://github.com/cowboyd/libv8/issues/107
Puedes instalar esa versión en Mavericks:
gem install libv8 -v 3.11.8.17 -- --with-system-v8
Puedo confirmar que esto funciona con rbenv y ruby 1.9.3p448
Tuve este mismo problema cuando actualicé OSX Mountain Lion a OSX Mavericks. La respuesta aceptada funcionó para libv8, pero no cuando fui a instalar el paquete therubyracer gema.
La actualización de ruby-1.8.7-p354 a ruby-1.8.7-375 hizo el truco por mí. Las gemas libv8 (3.16.14.3-x86_64-darwin-13) y therubyracer (0.12.0) se instalaron sin problema.
asumiendo que usas rbenv:
rbenv versions
system
* 1.8.7-p354
2.0.0-rc2
rbenv uninstall 1.8.7-p354
rbenv install 1.8.7-p375
rbenv versions
system
* 1.8.7-p375
2.0.0-rc2
bundle install
https://github.com/cowboyd/therubyracer/issues/339
La solución de jasonlynes encontrada en ese enlace hizo el truco para mí. cualquier otra cosa no funcionó.
brew install homebrew/versions/v8-315
brew link --overwrite v8-315 --force
gem install libv8 -v ''3.16.14.13'' -- --with-system-v8
gem install therubyracer -v ''0.12.2'' -- --with-system-v8
Esto funcionó bien para mi:
Intenta instalar esta gema precompilada:
https://dl.dropboxusercontent.com/u/7919548/gems/libv8/libv8-3.11.8.17-x86_64-darwin-13.gem (sha1: 5ce07aaf4085fff5a5e10fe018fd6b22021bef3b)
O si prefieres construir el tuyo:
git clone https://github.com/cowboyd/libv8.git
cd libv8
git checkout 3.11
bundle install
bundle exec rake clean build binary
gem install pkg/libv8-3.11.8.17-x86_64-darwin-13.gem
Fuente: https://github.com/cowboyd/libv8/issues/107
Gracias a Felix Bünemann por la corrección!