Como fazer o Ruby / Homebrew / RVM funcionar no Yosemite?


118

Depois de instalar o Yosemite, não consegui executar brew ou ruby.

Eu estava recebendo este erro na atualização do brew:

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

recebendo este erro no irb:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:infu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:inreverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:ineach'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:inwrite_gem_make_out'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in build_error' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:inrescue in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in build_extension' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:inblock in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in each' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in block in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:inuse_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in contains_requirable_file?' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:inblock in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in each' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:infind'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in find_inactive_by_path' from /Library/Ruby/Site/2.0.0/rubygems.rb:185:intry_activate'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:150:in block in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:158:inblock in each_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:167:in each_sublocale' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:157:ineach_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:145:in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:124:infind'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:108:in load' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:32:ininitialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:in new' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:ininit_config'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:16:in setup' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.rb:380:instart'
from /usr/bin/irb:12:in `'

Respostas:


281

Esse erro pode ser facilmente corrigido nas seguintes etapas:

1) Abra o terminal

2) Tipo nano /usr/local/Library/brew.rb

3) Na primeira linha, altere “1,8 ″ para“ Atual ”, para que fique assim:

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

via http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/


14
quando faço essa alteração, recebo o erro "Homebrew requer Leopard ou superior. Para obter suporte do Tiger, consulte: github.com/mistydemeo/tigerbrew ", embora esteja executando o yosemite
scientiffic de

4
isso dá um Please, commit your changes or stash them before you can merge.erro quando você tenta brew updateinfelizmente.
Naoise Golden

10
"C" deve ser capitalizado para Atual#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo Eu acredito que isso foi atualizado em 10.10.1. Na versão anterior, o "C" não era capitalizado. Obrigado.
raz0r

1
Eu também recebi a Homebrew requires Leopard or higher- segui a resposta abaixo instalar ferramentas de linha de comando xcode e agora funciona: stackoverflow.com/a/24225960/1062936
greg

39

Eu atualizei para o Yosemite e depois descobri que brewestava quebrado.

/usr/local/bin/brew: /usr/local/Library/brew.rb: 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

Se você ainda não fez nenhuma alteração na cerveja, aqui está o que eu recomendo. Caso contrário, leia mais abaixo.

  1. cd /System/Library/Frameworks/Ruby.framework/Versions/
  2. sudo ln -s Current 1.8
  3. brew update
  4. sudo unlink 1.8

Já fez alterações nos arquivos de preparação e ficou preso em uma bagunça git?

Tentei editar, /usr/local/Library/brew.rbmas a mudança local no meu repositório git estava impedindobrew update de puxar as atualizações. Tentei algumas outras soluções mencionadas nesta página e de outros sites e acabei com uma bagunça idiota e tudo o que eu queria fazer era desfazer tudo que tinha feito para preparar.

Eu cometi minha mudança, mas piorou as coisas. Eventualmente eu tive que desfazer meus commits e git reset --hard HEAD~1até que eu estivesse no commit-ish certo. Eu tinha uma bagunça de arquivos não versionados também (mudei as permissões dos arquivos em / usr / Local), então fiz um git clean -f -dque removeu todos os arquivos e diretórios não versionados e me levou de volta ao ponto de partida antes de fazer qualquer mudança.


3
Essa resposta funcionou (incluindo desfazer a bagunça do git), enquanto a resposta mais votada me deixou com o problema do git.
Steve M

Muito útil após atualizar seu sistema! Obrigado
viciado em codificação de

Isso falha no El Capitan com "ln: operação não permitida" por causa do modo sem raiz. Você pode encontrar uma solução alternativa aqui: apple.stackexchange.com/questions/196224/…
Jorge Ortiz

37

Passos para corrigir:

  1. Instale ferramentas de linha de comando para Xcode 6

  2. Reinstale a mistura:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Assim que a mistura estiver instalada, o rvm funcionará:

    rvm install ruby

Funcionou para mim, yahoo!


Eu tenho o Ruby instalado e funcionando, mas isso ainda não está funcionando para mim: stackoverflow.com/questions/24113251/…
eden

Eu removi o rvm e o nginx completamente e os reinstalei após instalar as ferramentas de desenvolvedor do Xcode 6. Agora está funcionando como um encanto.
wout

1
Isso funcionou para mim também, só queria esclarecer para executar este comando para a etapa 1: xcode-select --install
James Toomey

33

Editar o script significa brew updateque não funcionará; existem edições locais para arquivos rastreados que faz com que ogit pull falhe.

Eu fiz isso, o que eu suspeito ser mais limpo:

cd /usr/local/Library
git pull -q origin refs/heads/master:refs/remotes/origin/master

Não há reclamações de brew doctor.


Quando faço isso, recebo um erro sobre arquivos não rastreados que devem ser movidos antes da mesclagem. Todos esses são arquivos da Biblioteca / Fórmula /.
septerr

Supondo que você não tenha editado nada, quando isso acontecer comigo, significa que preciso executar brew doctore seguir algumas instruções. O problema é que brew doctorprovavelmente não funciona para você, se você está aqui. Você pode simplesmente ser capaz de git stashcontinuar.
Otto

7

Este é um conglomerado de respostas de postagens de outras pessoas, bem como um pouco de pesquisa no Google, mas achei melhor colocá-lo para que uma resposta completa esteja em um só lugar. Especificamente, isso faz com que as coisas funcionem agora, mas também permite que você faça atualizações de preparação normalmente e deixa tudo limpo novamente.

  1. Abra /usr/local/Library/brew.rb (emacs / vi / nano / qualquer que seja)
  2. Alterar a primeira linha para ler: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Você está apenas mudando o "1.8" que estava naquela linha para "Atual" (certifique-se de manter o "C" maiúsculo, caso contrário o git ficará confuso mais tarde).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(ou sudo brew updatese sua bebida estiver configurada para fazer alterações de sistema apenas com sudo)

Crédito: muito disso veio daqui , embora eu realmente não recomende fazer isso git commit -amem sua pasta / usr / local.


Esta é a única solução que funcionou para mim. É por causa das bagunças super-feias frequentes como essa que estou mudando de Ruby e Rails para meu próximo aplicativo.
Deborah

3

Como o dito antes: 1) Mude para o atual 2) instale o xcode 6

Se agora você tiver mais problemas com o brew e o ruby, isso deve ajudar: De alguma forma, o brew precisa do ruby ​​na versão 1.8, então crie a pasta:

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin

e faça um link simbólico:

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Obrigado! Esta foi a única solução que funcionou para mim;)
alejandromp


1

Eu corrigi isso da seguinte maneira:

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master


0

Observação: só faça o seguinte se você acabar em um estado de falha completa, pois isso é muito PERIGOSO

Como exemplo, continuei recebendo

$ sudo ln -s Atual 1.8

atualização de $ brew

/usr/local/Library/brew.rb:18:in ': ajuda do método indefinido?' para [“atualização”]: Array (NoMethodError)

Acabei de entender isso ... (não importa o comando, basta alternar “atualizar” com o comando). Resolvi o problema pedindo uma /usr/localpasta de amigos . Em seguida, fiz um backup da minha /usr/localpasta.

sudo mv / usr / local /usr/local.orig

Eu então mudei o dele /usr/localpara o meu

sudo mv ~ / Downloads / local / usr / local

Nota: Você provavelmente perderá alguns dados, portanto, certifique-se de fazer um backup.


-1

Tive problemas ao tentar instalar Ruby usando gerenciadores de pacotes. Para ser justo com esses programas, admito ter pouca experiência com eles e não fiz o esforço de ir mais fundo como a maioria dos outros respondentes fez. Sou preguiçoso e prefiro usar um instalador binário disponível para a maioria das opções de opsys e muitos pacotes. Infelizmente, Ruby não parece fornecer um.

Achei o ruby-build fácil de instalar (independente - não o plug-in), e ele construiu Ruby a partir de fontes sem erros e o colocou onde eu queria.

Bingo - fácil :) Esta parece ser uma boa alternativa para nós da persuasão do gerenciador de pacotes desafiada.

Charlie

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.