Come far funzionare Ruby / Homebrew / RVM su Yosemite?


118

Dopo aver installato Yosemite, non sono stato in grado di eseguire brew o ruby.

Ho ricevuto questo errore durante l'aggiornamento della birra:

/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

ottenendo questo errore su 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 `'

Risposte:


281

Questo errore può essere facilmente risolto nei seguenti passaggi:

1) Aprire il terminale

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

3) Nella prima riga cambia "1.8" in "Current", quindi dovrebbe apparire così:

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

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


14
quando apporto questa modifica, ricevo l'errore "Homebrew richiede Leopard o versioni successive. Per il supporto Tiger, vedi: github.com/mistydemeo/tigerbrew " anche se sto eseguendo yosemite
scientiffic

4
questo dà un Please, commit your changes or stash them before you can merge.errore quando si tenta di brew updatesfortunatamente.
Naoise Golden

10
"C" deve essere in maiuscolo per Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo Credo che questo sia stato aggiornato in 10.10.1. Nella versione precedente la "C" non era maiuscola. Grazie.
raz0r

1
Ho anche ottenuto il Homebrew requires Leopard or higher- Ho seguito la risposta qui sotto installa gli strumenti da riga di comando xcode e ora funziona: stackoverflow.com/a/24225960/1062936
greg

39

Ho aggiornato a Yosemite e in seguito ho scoperto che brewnon funzionava.

/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 non hai ancora apportato modifiche alla preparazione, ecco cosa ti consiglio. Altrimenti leggi più avanti.

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

Hai già apportato modifiche ai file brew e sei bloccato in un pasticcio git?

Ho provato a modificare /usr/local/Library/brew.rbma la modifica locale al mio repository git impediva brew updatedi rimuovere gli aggiornamenti. Ho provato altre soluzioni menzionate in questa pagina e da altri siti e sono finito con un pasticcio e tutto quello che volevo fare era annullare tutto ciò che avevo fatto per preparare.

Ho commesso il mio cambiamento ma ha peggiorato le cose. Alla fine ho dovuto annullare i miei commit e git reset --hard HEAD~1fino a quando non ero al giusto commit-ish. Avevo anche un pasticcio di file senza versione (ho cambiato i permessi dei file in / usr / Local), quindi ho fatto una procedura git clean -f -dche ha rimosso tutti i file e le directory senza versione e mi ha riportato al punto in cui avevo iniziato prima di apportare modifiche.


3
Questa risposta ha funzionato (incluso l'annullamento di git mess) dove la risposta votata in alto mi ha lasciato con un problema con git.
Steve M

Molto utile dopo aver aggiornato il tuo sistema! Grazie
coding addicted

Questo fallisce in El Capitan con "ln: operazione non consentita" a causa della modalità senza root. Puoi trovare una soluzione alternativa qui: apple.stackexchange.com/questions/196224/…
Jorge Ortiz

37

Passaggi per risolverlo:

  1. Installa gli strumenti della riga di comando per Xcode 6

  2. Reinstallare brew:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Una volta installato brew, rvm funzionerà:

    rvm install ruby

Ha funzionato per me, yahoo!


ho rubato attivo e funzionante, ma questo non funziona ancora per me: stackoverflow.com/questions/24113251/…
eden

Ho rimosso completamente rvm e nginx e li ho reinstallati dopo aver installato gli strumenti per sviluppatori Xcode 6. Ora funziona come un incantesimo.
senza

1
Questo ha funzionato anche per me, volevo solo chiarire di eseguire questo comando per il passaggio 1: xcode-select --install
James Toomey

33

Modificare lo script significa brew updateche non funzionerà; ci sono modifiche locali ai file tracciati che fanno git pullfallire il

Ho fatto questo, che sospetto sia più pulito:

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

Non ci sono reclami da brew doctor.


Quando lo faccio, ricevo un errore sui file non tracciati che devono essere spostati prima dell'unione. Questi sono tutti i file in Library / Formula /.
septerr

Supponendo che tu non abbia modificato nulla, quando mi succede significa che devo correre brew doctore seguire alcune istruzioni. Il problema è che brew doctorprobabilmente non funziona per te, se sei qui. Potresti essere in grado di farlo git stashe andare avanti.
Otto

7

Questo è un conglomerato di risposte dai post di altre persone e un po 'di ricerche su Google, ma ho pensato di metterlo su in modo che una risposta completa sia in un unico posto. In particolare, questo fa funzionare le cose ora, ma ti consente anche di eseguire gli aggiornamenti della birra normalmente e di pulire di nuovo tutto.

  1. Apri /usr/local/Library/brew.rb (emacs / vi / nano / qualunque cosa)
  2. Modificare la prima riga per leggere: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Stai solo cambiando "1.8" che era in quella riga in "Current" (assicurati di mantenere la "C" maiuscola altrimenti git si confonderà in seguito).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(o sudo brew updatese la tua birra è configurata per apportare modifiche al sistema solo con sudo)

Credito: molto di questo è venuto da qui , anche se consiglio vivamente di non farlo git commit -amnella tua cartella / usr / local.


Questa è l'unica soluzione che ha funzionato per me. È a causa dei frequenti disastri super brutti come questo che mi sto allontanando da Ruby e Rails per la mia prossima app.
Deborah

3

Come quello prima detto: 1) Passa all'attuale 2) installa xcode 6

Se ora hai ulteriori problemi con brew e ruby, questo dovrebbe aiutare: in qualche modo brew ha bisogno di ruby ​​nella versione 1.8, quindi crea la cartella:

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

e crea un collegamento simbolico:

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

Grazie! Questa era l'unica soluzione che ha funzionato per me;)
alejandromp

2

Dai un'occhiata a questo tutorial qui: http://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

Ha funzionato per me!


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
bummi

1

L'ho risolto come segue :

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


0

Nota: eseguire le operazioni seguenti solo se si finisce in uno stato completamente fallito, poiché questo è molto PERICOLOSO

Come esempio ho continuato a ricevere

$ sudo ln -s Corrente 1.8

$ brew update

/usr/local/Library/brew.rb:18:in ': undefined method help?' per ["update"]: Array (NoMethodError)

Ho appena capito ... (indipendentemente dal comando, basta disattivare "aggiorna" con il comando) Ho risolto il problema chiedendo una /usr/localcartella amici . Ho quindi eseguito un backup della mia /usr/localcartella.

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

Poi ho spostato il suo /usr/localnel mio

sudo mv ~ / Downloads / local / usr / local

Nota: probabilmente perderai alcuni dati, quindi assicurati di eseguire un backup.


-1

Ho avuto problemi a installare Ruby usando i gestori di pacchetti. In tutta onestà con questi programmi, ammetto di avere poca esperienza con loro e non ho fatto lo sforzo di scavare più a fondo come ha fatto la maggior parte degli altri soccorritori. Sono pigro e preferisco usare un programma di installazione binario disponibile per la maggior parte delle scelte di opsys e molti pacchetti. Sfortunatamente, Ruby non sembra fornirne uno.

Ho trovato ruby-build facile da installare (stand alone - non il plugin), e ha compilato Ruby da sorgenti senza errori e l'ha posizionato dove volevo.

Bingo - facile :) Questa sembra una buona alternativa per quelli di noi del gestore di pacchetti che hanno sfidato la persuasione.

Charlie

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.