ruby-on-rails macos gem therubyracer osx-mavericks

ruby on rails - "Joya instalar therubyracer-v ''0.10.2''" en osx Mavericks no instalando



ruby-on-rails macos (12)

Acabo de tener el mismo problema y una solución es usar apple-gcc42 en lugar de clang para compilar ambas gemas:

brew install apple-gcc42

Y luego tiene la opción entre hacer algunos enlaces simbólicos en / usr / bin para los binarios de {gcc, g ++, c ++}:

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++ sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp

De hecho, g ++ debería ser suficiente.

O ... podría exportar variables de entorno CC / CXX / CPP con rutas correspondientes a los binarios creados por homebrew. Esa es seguramente una solución más limpia.

Una tercera solución es descargar Xcode 4.6.3 e instalarlo en la carpeta de aplicaciones . Luego, ingrese en la terminal:

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer gem install therubyracer

Una vez que se haya instalado la gema, puedes volver a Xcode 5.0:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

Intentando instalar therubyracer en mavericks usando "gem install therubyracer -v ''0.10.2''" pero recibo el siguiente error:

/Users/dennischen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb checking for main() in -lobjc... yes creating Makefile make compiling rr.cpp clang: warning: argument unused during compilation: ''-rdynamic'' rr.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ 1 warning generated. compiling v8.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_array.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_callbacks.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_context.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_date.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_debug.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_exception.cpp clang: warning: argument unused during compilation: ''-rdynamic'' v8_exception.cpp:10:16: warning: unused variable ''stack'' [-Wunused-variable] static void* stack[20]; ^ 1 warning generated. compiling v8_external.cpp clang: warning: argument unused during compilation: ''-rdynamic'' v8_external.cpp:10:9: warning: unused variable ''references'' [-Wunused-variable] VALUE references; ^ 1 warning generated. compiling v8_function.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_handle.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_locker.cpp clang: warning: argument unused during compilation: ''-rdynamic'' v8_locker.cpp:45:5: warning: control reaches end of non-void function [-Wreturn-type] } ^ v8_locker.cpp:85:5: warning: control reaches end of non-void function [-Wreturn-type] } ^ 2 warnings generated. compiling v8_message.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_object.cpp clang: warning: argument unused during compilation: ''-rdynamic'' v8_object.cpp:77:19: warning: unused variable ''proto'' [-Wunused-variable] Handle<Value> proto(rr_rb2v8(prototype)); ^ 1 warning generated. compiling v8_script.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_string.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_template.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_try_catch.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_v8.cpp clang: warning: argument unused during compilation: ''-rdynamic'' compiling v8_value.cpp clang: warning: argument unused during compilation: ''-rdynamic'' v8_value.cpp:100:9: warning: unused function ''ToInt32'' [-Wunused-function] VALUE ToInt32(VALUE self) { ^ 1 warning generated. compiling v8_weakref.cpp clang: warning: argument unused during compilation: ''-rdynamic'' linking shared-object v8.bundle clang: error: no such file or directory: ''/Users/dennischen/.rvm/gems/ruby-1.9.3-p194@panini/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a'' make: *** [v8.bundle] Error 1

¿Alguien puede ayudarme a descubrir cómo hacer que esta gema funcione? Tengo las herramientas de línea de comandos instaladas.


Así que finalmente lo conseguí trabajando después de algunas dificultades ... gracias a Simon y Alvaro.

Sin embargo, tengo una cosa que agregar, usar la bandera --with-system-v8 no funcionó para mí ... Así que eliminé mi sistema v8 con

brew uninstall v8

Y la carrera

gem install libv8

Si ya has ejecutado gem install libv8 con la bandera del sistema v8, asegúrate de desinstalar esa versión de la gema (hazlo ejecutando gem uninstall libv8 ). Lo importante es que no deberías usar el proporcionado por brew, parece que no funciona en Mavericks (se instala bien y el bundler informará que tu paquete está completo, pero tu aplicación fallará cuando intente usar v8 )

Para resumir la respuesta, hacer lo siguiente funcionó para mí:

brew install apple-gcc42 sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++ sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp brew uninstall v8 gem install libv8 gem install therubyracer


Como se sugiere en muchas respuestas, lo más fácil es compilar las extensiones nativas de Ruby Racer con Apple GCC 4.2 (en lugar de la versión instalada con Xcode).

Si está utilizando MacPorts, no debería tener que lidiar manualmente con la configuración de enlaces simbólicos para los binarios de GCC. El comando de port select hace por usted. Si no ha actualizado MacPorts desde la instalación de Mavericks, realice una sudo port selfupdate actualización de sudo port selfupdate . Con MacPorts actualizado, intente lo siguiente:

# If you don''t have it, install the port for Apple''s GCC 4.2 sudo port install apple-gcc42 # OR # If you had apple-gcc42 already (before Mavericks), update it sudo port upgrade apple-gcc42 # Same result as manual symlinking of GCC in other answers sudo port select gcc apple-gcc42 && hash -r # Install therubyracer, will install libv8 gem dependency # *note* if you have any existing versions of these gems, remove them gem install therubyracer # Restore GCC to system default (optional) sudo port select gcc none && hash -r

En general, este procedimiento ( sudo port select gcc [version] ) funcionará cada vez que desee utilizar una versión de GCC específica en lugar de la que Xcode instaló (Apple LLVM v5 para 10.9 Mavericks / Xcode 5).


Encontré una solución que funcionó sin instalar apple-gcc42.

Esto funcionará si el mensaje de error que está recibiendo tiene este aspecto:

clang: error: no such file or directory: ''/Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a''

Entonces deberías poder hacer lo siguiente:

brew install v8 bundle install # after failing create link from brew installed v8 to error location ln -s /usr/local/Cellar/v8/3.21.17/lib/libv8_base.x64.a /Users/mscottford/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a bundle install

Fuente: https://github.com/cowboyd/therubyracer/issues/277#issuecomment-27734348


Esta debería ser una forma segura y sin fallas (sin enlaces simbólicos) de instalar therubyracer para cualquier persona que tenga problemas.

Tomado de: gem install therubyracer -v 0.11.4 falla en OS X 10.10

instale Xcode (si aún no tiene una de estas versiones) 6.1.1, 6.2-beta o 6.3-beta y (esta es necesaria) 4.6.3

gem uninstall libv8 si aún no lo has hecho

cambiar a Xcode 4.6.3

sudo xcode-select --switch /Applications/Xcode4.6.3.app/Contents/Developer

gem install libv8 -v ''3.11.8.17'' O cualquiera que sea la versión vinculada a tu versión de therubyracer

cambia a Xcode 6.1.1, 6.2-beta o 6.3-beta (o si quieres probar tu instalación actual de Xcode, ajusta esta línea, he confirmado los 3 de estos trabajos)

sudo xcode-select --switch /Applications/Xcode6.1.1.app/Contents/Developer

gem install therubyracer -v ''0.11.4'' o la versión que está tratando de instalar.


Lo que hice fue para osx Mavericks:

git clone [email protected]:cowboyd/therubyracer.git

Entonces:

gem build therubyracer.gemspec gem install therubyracer-0.12.1.gem

Este procedimiento descargó una versión binaria de libv8 y lo instaló.


Me las arreglé para instalar therubyracer 0.12 y libv8 3.16.14.3 en ruby ​​2.0.0p353 y os x 10.9

libv8 requiere gcc42

brew install v8 brew install apple-gcc42 sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/g++-4.2 /usr/bin/g++ sudo ln -sf /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/cpp-4.2 /usr/bin/cpp gem install libv8

therubyracer requiere más tarde gcc

brew install gcc49 sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/gcc-4.9 /usr/bin/gcc sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/g++-4.9 /usr/bin/g++ sudo ln -sf /usr/local/Cellar/gcc49/4.9-20131110/bin/cpp-4.9 /usr/bin/cpp

Gemfile

gem ''therubyracer'', :require => ''v8'', :platforms => :ruby

utilizar bundle lugar de gem install therubyracer


Si decides utilizar una nueva versión de joya therubyracer , ya no tendrás este problema

De otra manera:

brew tap homebrew/dupes # Thanks Tom brew install 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 brew uninstall v8 gem uninstall libv8 gem install therubyracer -v ''0.10.2'' # specify version


Tuve el mismo problema cuando actualicé desde OSX Mountain Lion a OSX Mavericks.

La actualización de ruby-1.8.7-p354 a ruby-1.8.7-375 me gustó.

Tal vez intente actualizado de ruby ​​1.9.3-p194 a rc1 (1.9.3 está por encima de p484 ahora)

suponiendo que usa rbenv:

rbenv install 1.9.3-rc1 rbenv rehash rbenv global 1.9.3-rc1 bundle install


Tuve el mismo problema, esto funciona para mí:

therubyracer (0.10.2) y libv8 (3.3.10.4)

Ante todo:

  • brew install apple-gcc42
  • debe vincular todos los archivos binarios de los compiladores ( gcc , cpp , g++ ) a /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/<compiler>

Después, podrías intentar esto:

  • brew install v8
  • gem install libv8 -v ''3.3.10.4'' -- --with-system-v8
  • gem install therubyracer -v ''therubyracer'' o bundle install en el directorio del proyecto rails.

Tuve este problema después de actualizar de Mavericks a Yosemite. El problema fue que compilé mi versión de Ruby con la versión anterior de OSX.

Si corrí

ruby -rubygems -e ''puts Gem::Platform.new(RUBY_PLATFORM)''

Me gustaría obtener x86_64-darwin-13 lugar de x86_64-darwin-14 para Yosemite.

Para volver a instalar Ruby I

  1. Versión antigua completamente eliminada: rvm remove ruby-2.1.1
  2. Reinstalado desde la fuente (el --disable-binary no usa binarios precompilados y fuerza una compilación): rvm reinstall --disable-binary 2.1

Luego pude ejecutar la bundle install sin errores luego de probar todas las soluciones anteriores.


Tuve un error casi idéntico al tratar de instalar therubyracer 0.12.0 para que funcione con libv8. Esto funcionó para mí:

$ brew upgrade gcc $ gem uninstall therubyracer $ gem uninstall libv8 $ gem install therubyracer -v ''0.12.0'' Fetching: therubyracer-0.12.0.gem (100%) Building native extensions. This could take a while... Successfully installed therubyracer-0.12.0 1 gem installed $ gem install libv8 -v ''3.16.14.3'' -- --with-system-v8 Fetching: libv8-3.16.14.3.gem (100%) Building native extensions with: ''--with-system-v8'' This could take a while... Successfully installed libv8-3.16.14.3 1 gem installed