¿Por qué no puedo instalar Rails en Lion usando RVM?

83

Tengo problemas al intentar instalar Rails en OS X Lion usando RVM.

Hasta ahora, he hecho lo siguiente:

  1. Instaló Mac OS X Lion versión 10.7 (compilación 11A459e).
  2. Vista previa para desarrolladores de XCode 4.1 instalado 5.
  3. RVM instalado.
  4. Instaló una versión 1.8.7 de Ruby a través de RVM usando el comando rvm install 1.8.7. Nota: Necesito usar 1.8.7 y no 1.9.2.
  5. Cambió a la versión 1.8.7 de Ruby usando el comando rvm 1.8.7.
  6. Creó un nuevo conjunto de gemas usando el comando rvm gemset create rails3.
  7. Cambió al nuevo conjunto de gemas usando el comando rvm use 1.8.7@rails3.
  8. Para instalar Rails, ejecuté el comando gem install railspero recibí el siguiente error:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [ERROR] Fallo de segmentación

El mismo error ocurre al intentar ejecutar cualquier comando de gema, así que no creo que sea realmente un problema con Rails.

A juzgar por los enlaces a continuación, no parece que sea la única persona que tiene este problema:

http://twitter.com/#!/pingles/status/66261101351927809 y https://github.com/carlhuda/bundler/issues/1058

Michael Jerome
fuente
2
Está caminando por un camino muy avanzado, y la adición de 1.8.7 probablemente complica las cosas. Recomiendo intentar instalar 1.9.2, luego Rails y ver cómo funciona. ENTONCES, intentaría actualizar 1.8.7 y Rails. Tal como está, está utilizando dos piezas de software que aún no se han lanzado, por lo que es posible que el soporte aún no esté actualizado. La "falla de segmentación" suele ser el resultado de una compilación de 32 bits contra un sistema de 64 bits, lo que podría ocurrir con versiones inesperadas del sistema. Estudie el resultado de rvm infoy vea lo que dice. Podría contener algunas pistas.
The Tin Man
2
Como una advertencia justa, Lion está bajo NDA, por lo que probablemente no se le permita hablar de esto fuera de los canales designados de Apple. Apple podría revocar su cuenta de desarrollador por discutirlo si así lo deseara.
Chuck
Gracias @ the Tin Man: Veré si hay algo en la información de rvm. Lamentablemente, tengo que usar 1.8.7 para este proyecto; siguiendo los pasos anteriores pero con Ruby 1.9.2 permitió que Rails 3 se instalara bien.
Michael Jerome
Gracias por la advertencia @Chuck: tendré cuidado de no revelar nada que haya acordado no hacer.
Michael Jerome
RVM 1.9.2 no funciona con ninguna de estas sugerencias. rvm detecta llvm y no se ejecuta
Dale

Respuestas:

77

¡Arreglado!

La respuesta estaba en realidad en uno de los enlaces que publiqué arriba. Antes de instalar una versión de ruby ​​(rvm install 1.8.7) necesitaba ejecutar " export CC=/usr/bin/gcc-4.2". Con eso en su lugar, todo salió bien.

Si no desea CCexportar permanentemente, puede hacerloCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Si ya ha instalado ruby ​​1.8.7. Solo hazCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7

Michael Jerome
fuente
Recuerdo haber leído en alguna parte que llvm sería el compilador predeterminado en lion, supongo que es por eso que necesitas algo así.
Schmurfy
3
El uso de ese comando de exportación cambia CC para todos los comandos posteriores en su sesión ... lo que podría estropear otras compilaciones. Utilice CC=/usr/bin/gcc-4.2 rvm install 1.8.7una sola línea para anular CC para la instalación de rvm.
skue
Por lo que vale, la nota de @ skue no funcionó para mí. Tuve que agregar esto en mi .zshrcarchivo.
Ben Kreeger
1
@Benjamin Estás usando Z Shell, ¿correcto? Vale la pena señalar, porque obviamente la mayoría de los usuarios de Mac solo usan Terminal + Bash.
Alan H.
1
@Alan H. - sí, definitivamente zsh. FWIW, en Lion, tuve problemas con zsh disparando .rvmrcscripts, así que volví a cambiar bashpor un tiempo. Por lo tanto, agregué esa línea a mi .bash_profile.
Ben Kreeger
24

Si ha instalado Xcode 4.2, en realidad ya no instala gcc que no sea LLVM, por lo que debe agregarlo. Por alguna razón, la degradación a 4.1 después de haber instalado 4.2 no funciona correctamente (al menos para mí y otros han tenido problemas similares).

Después de bastante paliza, esto es lo que finalmente funcionó para mí:

  1. Instale Xcode 4.2 desde la App Store
  2. Instale darwin gcc usando el instalador OSX gcc
  3. Instale REE asegurándose de eliminar cualquier vestigio de intentos anteriores:

Cierre cualquier ventana de terminal abierta, abra una nueva y

rvm remove ree
export CC=/usr/bin/gcc-4.2
rvm install ree

Esto funcionó para mí con rvm 1.8.6, OS X 10.7.2 y gcc-4.2 versión 4.2.1 (compilación de Apple 5666).

Si ya ha instalado Xcode 4.1, resista la tentación de actualizar a 4.2 y debería estar bien.

Matt Sanders
fuente
No vi esta vez anterior. Vine, pero encontré este paquete en otro tutorial. ¡Pero una gran respuesta si las recomendaciones anteriores no funcionan!
Tim Baas
Sí, acabo de recibir un nuevo MBP y ninguna de las respuestas anteriores funcionó para mí. FWIW, cuando instalé Xcode, obtuve la última versión, que es 4.2.1 en este momento. Instalé el instalador OSC gcc, agregué la línea de exportación a mi .bash_profile, luego volví a ejecutar el comando rvm install usando --force, y estaba listo para comenzar. ¡Gracias!
turbocargado
¡Me alegro de que esto haya ayudado! Estaba en la misma situación y ninguna de las otras respuestas me funcionó, así que quería documentarlo.
Matt Sanders
Esto también funcionó para mí después de que todas las sugerencias anteriores habían fallado.
Cory Schires
Como actualización, recientemente reinstalé Lion y pude hacer que todo funcionara sin instalar Xcode en absoluto. Por lo tanto, si aún no lo ha instalado, es posible que desee probar el instalador OSX gcc y ver si tiene lo que necesita.
Matt Sanders
22

Si eso aún no funciona, agregue --force. Entonces esto se convierte en:

CC=/usr/bin/gcc-4.2 rvm install ruby-1.8.7 --force

Hans verschooten
fuente
Sí, si comenzó la instalación sin gcc-4.2, continuará donde lo dejó la segunda vez. Entonces necesitas --force para borrar todo lo que ya compilaste con llvm y comenzar de nuevo.
lawrence
Soplé mi ~ / .rvm y todavía tuve que usar --force ty Hans
Scott Smith
Gracias Hans, - la fuerza es lo que estaba buscando también
Stu
1
A menudo, usar make cleandesde la línea de comandos en el directorio de instalación es el comando más apropiado para usar en lugar de --force. La fuerza ignora los errores y los errores son algo a lo que hay que prestar atención. Así que ten cuidado.
The Tin Man
7

Asegúrese de eliminar 1.8.7 si ya lo instaló antes de usar " export CC=/usr/bin/gcc-4.2" haciendo " rvm remove 1.8.7"

HeroicoEric
fuente
6

Tuve el mismo problema en mi sistema. Instalé las herramientas de línea de comandos Xcode de Apple que se incluyen con el compilador LLVM y sin uno gratuito de LLVM.

Ruby 1.8.7 no funcionará con un compilador LLVM ni siquiera con CC=clang, por lo que instalar un gcc gratuito LLVM resuelve el problema.

Aquí se enumeran varias opciones:

https://github.com/mxcl/homebrew/wiki/Custom-GCC-and-cross-compilers

Para resumir, instale GCC v4.2 con Homebrew :

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

y luego instale ruby ​​1.8.7:

CC=gcc-4.2 rvm install 1.8.7
KARASZI István
fuente
4
La URL de GitHub ha cambiado. El comando es ahora en su brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rblugar.
Matthew Ratzloff
4

En lugar de " export CC=/usr/bin/gcc-4.2" hacer " export CC=gcc" (debe instalarse xCode 4.2.x).

xpepermint
fuente
2

Comprueba qué versión de gcc tienes así:

ls -Al `which gcc-4.2`

Seguí las instrucciones aquí: http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

brew update
brew tap homebrew/dupes
brew install apple-gcc42

Luego reinstale:

Verifique nuevamente cuál es su ruta a gcc (para usar para CC =):

ls -Al `which gcc-4.2`

(opcional) Puede configurar esto en su .bashrc, por ejemplo:

export CC=/usr/bin/gcc-4.2

(opcional) elimina cualquier versión antigua de ruby

rvm remove 1.8.7

Entonces:

CC=/usr/local/bin/gcc-4.2 rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

o si ha configurado CC en su perfil

rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk 

Tenga en cuenta las banderas en la instalación de rvm. Tuve problemas para verificar la suma de comprobación en el servidor ftp y algunos problemas con tck y otras cosas. Es posible que pueda omitir esas banderas.

Además: es posible que deba eliminar una versión anterior de su conjunto de gemas:

rvm gemset delete <gemset>

Entonces

gem install bundler
bundle install

Espero que esto ayude.

Rimiano
fuente
1

Utilizando macport y la versión ruby-1.9.x. Instalé con éxito rieles con ruby ​​gem.

Henry Kim
fuente
1

Tengo el mismo problema solo para arch x86_64 , cuando comento la línea en mi ~ / .rvmrc

rvm_archflags="-arch x86_64"

Abra una nueva terminal e intentó instalar ruby-1.8.7 nuevamente

rvm install 1.8.7

Fue un exito.

Michael Nikitochkin
fuente
0

Si está utilizando RVM en un flujo de trabajo de desarrollo, agregué una solución en un archivo .rvmrc para OS X Lion.

https://gist.github.com/1112962

(nombre de archivo actualizado)

Brad Gessler
fuente
0

Esto no está relacionado con RVM, pero si lo que está buscando es un entorno de desarrollo local para Lion, es posible que desee probar RubyStack. Es un instalador todo en uno de código abierto y gratuito para Apache, MySQL, Ruby, Rails, etc. No requiere compilación y es autónomo, por lo que si no le gusta, simplemente elimine el directorio de instalación y listo. Descargo de responsabilidad: soy uno de los desarrolladores de RubyStack :)

Beltrán
fuente
0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7no me funcionó, utilicé CC=/usr/bin/gcc rvm install 1.8.7y funcionó (marcando con "cuál gcc")

Juan Pablo Buritica
fuente
0

Incluso con todas las otras sugerencias en esta página, seguía obteniendo errores de segmentación y frustrado, así que dije "¡al diablo!" y use Ruby 1.8.7 proporcionado por el sistema:

rvm use system

Necesita usar sudo para instalar gemas, pero aún así tendrá menos dolor de cabeza.

Aidan Feldman
fuente
Recuerde que el sistema instalado Ruby 1.8.7 está ahí para uso de Apple. Podemos aprovecharlo, pero tenga cuidado al actualizar las gemas.
The Tin Man