Por que não consigo instalar o Rails on Lion usando RVM?

83

Estou tendo problemas ao tentar instalar o Rails no OS X Lion usando RVM.

Até agora, fiz o seguinte:

  1. Instalado o Mac OS X Lion versão 10.7 (Compilação 11A459e).
  2. Instalado o XCode 4.1 Developer Preview 5.
  3. RVM instalado.
  4. Instalou uma versão 1.8.7 do Ruby via RVM usando o comando rvm install 1.8.7. Observação: preciso usar 1.8.7 e não 1.9.2.
  5. Mudou para a versão 1.8.7 do Ruby usando o comando rvm 1.8.7.
  6. Criado um novo gemset usando o comando rvm gemset create rails3.
  7. Mudou para o novo gemset usando o comando rvm use 1.8.7@rails3.
  8. Para instalar o Rails executei o comando gem install rails mas recebi o seguinte erro:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG] Falha de segmentação

O mesmo erro acontece ao tentar executar qualquer comando gem, então não acho que seja realmente um problema com Rails.

A julgar pelos links abaixo, não pareço ser a única pessoa com este problema:

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

Michael Jerome
fonte
2
Você está caminhando por uma borda muito sangrenta, e a adição de 1.8.7 provavelmente complica as coisas. Eu recomendo tentar instalar o 1.9.2, então Rails e ver como fica. ENTÃO, eu tentaria adaptar 1.8.7 e Rails. Como está, você está usando dois softwares que ainda não foram lançados, então você descobrirá que o suporte pode ainda não ter sido atualizado. A "falha de segmentação" geralmente é o resultado de uma construção de 32 bits em um sistema de 64 bits, o que pode acontecer com versões inesperadas do sistema. Estude o resultado de rvm infoe veja o que ele diz. Pode conter algumas pistas.
o Homem de Lata
2
Como um aviso justo, Lion está sob NDA, então você provavelmente não tem permissão para falar sobre isso fora dos canais designados da Apple. A Apple poderia revogar sua conta de desenvolvedor por discutir o assunto, se quisesse.
Chuck
Obrigado @ the Tin Man: Vou ver se há alguma coisa nas informações de rvm. Infelizmente, tenho que usar 1.8.7 para este projeto; seguir os passos acima, mas com Ruby 1.9.2 permitiu que o Rails 3 fosse instalado perfeitamente.
Michael Jerome
Obrigado pelo aviso @Chuck - terei cuidado para não divulgar nada que tenha concordado em não divulgar.
Michael Jerome
O RVM 1.9.2 não funciona com nenhuma dessas sugestões. rvm detecta llvm e não funciona
Dale

Respostas:

77

Corrigido!

A resposta estava em um dos links que postei acima. Antes de instalar uma versão do ruby ​​(rvm install 1.8.7), eu precisava executar " export CC=/usr/bin/gcc-4.2". Com isso no lugar, tudo correu bem.

Se não quiser CCexportar permanentemente, você pode fazerCC=/usr/bin/gcc-4.2 rvm install 1.8.7

Se você já instalou o ruby ​​1.8.7. Apenas façaCC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7

Michael Jerome
fonte
Lembro-me de ter lido em algum lugar que llvm seria o compilador padrão do Lion, suponho que seja por isso que você precisa de algo assim.
Schmurfy de
3
Usar esse comando de exportação altera o CC para todos os comandos subsequentes em sua sessão ... o que pode atrapalhar outras compilações. Use CC=/usr/bin/gcc-4.2 rvm install 1.8.7uma única linha apenas para substituir o CC para a instalação do rvm.
skue
Para valer a pena, a nota de @skue não funcionou para mim. Tive que adicionar isso ao meu .zshrcarquivo.
Ben Kreeger de
1
@Benjamin Você está usando Z Shell, correto? Vale a pena notar, porque obviamente a maioria dos usuários de Mac usa apenas Terminal + Bash.
Alan H.
1
@Alan H. - sim, definitivamente zsh. FWIW, no Lion, tive problemas com .rvmrcscripts de disparo de zsh , então voltei para bashpor um tempo. Portanto, adicionei essa linha ao meu .bash_profile.
Ben Kreeger de
24

Se você instalou o Xcode 4.2, ele não instala mais o gcc não-LLVM, então você deve adicioná-lo. Por alguma razão, fazer o downgrade para a versão 4.1 depois de instalar a versão 4.2 não funciona corretamente (pelo menos não funcionou para mim e outros tiveram problemas semelhantes).

Depois de muita surra, isto é o que finalmente funcionou para mim:

  1. Instale o Xcode 4.2 da App Store
  2. Instale darwin gcc usando o instalador OSX gcc
  3. Instale o REE certificando-se de remover quaisquer vestígios de tentativas anteriores:

Feche todas as janelas de terminal abertas, abra uma nova e

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

Isso funcionou para mim com o rvm 1.8.6, OS X 10.7.2 e gcc-4.2 versão 4.2.1 (Apple build 5666).

Se você já instalou o Xcode 4.1, resista ao impulso de atualizar para o 4.2 e você estará bem.

Matt Sanders
fonte
Não vi dessa vez antes, mas achei esse pacote em outro tutorial .. Mas uma ótima resposta se as recomendações acima não funcionarem !!
Tim Baas
Sim, acabei de receber um novo MBP e nenhuma das respostas anteriores funcionou para mim. FWIW, quando instalei o Xcode, eu, claro, peguei a versão mais recente, que é 4.2.1 agora. Instalei o instalador OSC gcc, adicionei a linha de exportação ao meu .bash_profile, depois executei novamente o comando rvm install usando --force e estava pronto para prosseguir. Obrigado!
turboladen
Que bom que ajudou! Eu estava na mesma situação e nenhuma das outras respostas funcionou para mim, então eu queria documentar isso.
Matt Sanders
Isso também funcionou para mim depois que todas as sugestões anteriores falharam.
Cory Schires
Como atualização, recentemente reinstalei o Lion e consegui fazer tudo funcionar sem instalar o Xcode. Portanto, se ainda não o instalou, experimente apenas o instalador OSX gcc e veja se tem o que precisa.
Matt Sanders
22

Se isso ainda não funcionar, adicione --force. Então isso se torna:

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

Hans verschooten
fonte
Sim, se você iniciou a instalação sem o gcc-4.2, ele continuará de onde parou na segunda vez. Então você precisa de --force para apagar tudo que você já compilou com llvm e começar de novo.
lawrence
Eu perdi meu ~ / .rvm e ainda tive que usar --force ty Hans
Scott Smith
Obrigado Hans, --force é o que eu estava procurando também
Stu
1
Freqüentemente, usar a make cleanpartir da linha de comando no diretório de instalação é o comando mais apropriado para usar em vez de --force. Force ignora erros, e erros são algo a que se deve prestar atenção. Por isso tem cuidado.
o Homem de Lata de
7

Certifique-se de remover 1.8.7 se já o instalou antes de usar " export CC=/usr/bin/gcc-4.2" fazendo " rvm remove 1.8.7"

HeroicEric
fonte
6

Eu tive o mesmo problema no meu sistema. Eu instalei as ferramentas de linha de comando Xcode da Apple que vem com o compilador LLVM e sem um LLVM gratuito.

Ruby 1.8.7 não funcionará com um compilador LLVM, nem mesmo com CC=clang , então instalar um gcc grátis LLVM resolve o problema.

Existem várias opções listadas aqui:

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

Resumindo, instale o GCC v4.2 com Homebrew :

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

e depois instale o ruby ​​1.8.7:

CC=gcc-4.2 rvm install 1.8.7
KARASZI István
fonte
4
O URL do GitHub mudou. O comando agora é brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb.
Matthew Ratzloff,
4

Em vez de " export CC=/usr/bin/gcc-4.2" fazer " export CC=gcc" (xCode 4.2.x deve ser instalado).

xpepermint
fonte
2

Verifique qual versão do gcc você tem assim:

ls -Al `which gcc-4.2`

Segui as instruções aqui: http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion

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

Em seguida, reinstale:

Verifique novamente qual é o seu caminho para o gcc (para usar para CC =):

ls -Al `which gcc-4.2`

(opcional) Você pode definir isso em seu .bashrc, por exemplo:

export CC=/usr/bin/gcc-4.2

(opcional) remova qualquer versão antiga do ruby

rvm remove 1.8.7

Então:

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

ou se você configurou CC em seu perfil

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

Observe as sinalizações na instalação do rvm. Tive problemas para verificar a soma de verificação no servidor ftp e alguns problemas com tck e quais não. Você pode omitir essas bandeiras.

Além disso: pode ser necessário remover uma versão antiga do seu gemset:

rvm gemset delete <gemset>

Então

gem install bundler
bundle install

Espero que isto ajude.

Rimian
fonte
1

Usando macport e versão ruby-1.9.x. Eu instalei com sucesso rails com ruby ​​gem.

Henry Kim
fonte
1

Tenho o mesmo problema apenas para o arch x86_64 , quando comento a linha no meu ~ / .rvmrc

rvm_archflags="-arch x86_64"

Abra um novo terminal e tente instalar o ruby-1.8.7 novamente

rvm install 1.8.7

Foi um sucesso.

Michael Nikitochkin
fonte
0

Se você estiver usando RVM em um fluxo de trabalho de desenvolvimento, adicionei uma correção em um arquivo .rvmrc para OS X Lion.

https://gist.github.com/1112962

(nome do arquivo atualizado)

Brad Gessler
fonte
0

Isso não está relacionado ao RVM, mas se o que você está procurando é um ambiente de desenvolvimento local para o Lion, experimente o RubyStack. É um instalador tudo-em-um de código aberto e gratuito para Apache, MySQL, Ruby, Rails, etc. Ele não requer compilação e é independente, então se você não gostar, você pode simplesmente remover o diretório de instalação e pronto. Aviso: Sou um dos desenvolvedores do RubyStack :)

Beltran
fonte
0

CC=/usr/bin/gcc-4.2 rvm install 1.8.7não funcionou para mim, usei CC=/usr/bin/gcc rvm install 1.8.7e funcionou (verificando com "qual gcc")

Juan Pablo Buritica
fonte
0

Mesmo com todas as outras sugestões nesta página, eu ainda estava recebendo segfaults e ficando frustrado, então disse "dane-se!" e usar o Ruby 1.8.7 fornecido pelo sistema:

rvm use system

Você precisa usar o sudo para instalar gemas, mas ainda assim terá menos dor de cabeça.

Aidan Feldman
fonte
Lembre-se de que o sistema Ruby 1.8.7 instalado está lá para uso da Apple. Podemos pegar carona nisso, mas tome cuidado ao atualizar as joias.
o Homem de Lata de
0

Minha solução foi substituir o link simbólico / usr / bin / gcc no terminal. Veja como eu fiz:

https://plus.google.com/101970693023462019144/posts/eYVLvMCqTmc

Isso não apenas consertou minha instalação RVM, mas também garantiu que a instalação de gems com extensões nativas (como rmagick) funcionasse.

Mark Maglana
fonte