gem rubygems osx-mavericks osx-yosemite libv8

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



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!



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!