Wie kann man Ruby / Homebrew / RVM dazu bringen, an Yosemite zu arbeiten?


118

Nach der Installation von Yosemite konnte ich weder Brew noch Ruby ausführen.

Ich habe diesen Fehler beim Brauen-Update erhalten:

/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

diesen Fehler auf irb bekommen:

/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 `'

Antworten:


281

Dieser Fehler kann leicht in den folgenden Schritten behoben werden:

1) Terminal öffnen

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

3) Ändern Sie in der ersten Zeile "1.8" in "Current", damit es so aussieht:

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

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


14
Wenn ich diese Änderung vornehme, erhalte ich die Fehlermeldung "Homebrew benötigt Leopard oder höher. Tiger-Unterstützung finden Sie unter: github.com/mistydemeo/tigerbrew ", obwohl ich Yosemite
Scientiffic

4
Dies gibt einen Please, commit your changes or stash them before you can merge.Fehler, wenn Sie es brew updateleider versuchen .
Naoise Golden

10
"C" muss für Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@ Diablo Ich glaube, dies wurde in 10.10.1 aktualisiert. In früheren Versionen wurde das "C" nicht großgeschrieben. Vielen Dank.
Raz0r

1
Ich habe auch die Homebrew requires Leopard or higher- ich folgte der Antwort unten installieren xcode Befehlszeilentools und es funktioniert jetzt: stackoverflow.com/a/24225960/1062936
greg

39

Ich habe auf Yosemite aktualisiert und später herausgefunden, dass brewes kaputt ist.

/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

Wenn Sie noch keine Änderungen am Gebräu vorgenommen haben, empfehle ich Folgendes. Ansonsten lesen Sie weiter unten.

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

Sie haben bereits Änderungen an den Brühdateien vorgenommen und stecken in einem Git-Chaos?

Ich habe versucht zu bearbeiten, /usr/local/Library/brew.rbaber die lokale Änderung an meinem Git-Repo hat verhindert brew update, dass Updates abgerufen werden. Ich habe einige andere Lösungen ausprobiert, die auf dieser Seite und auf anderen Websites erwähnt wurden, und am Ende hatte ich ein Durcheinander. Alles, was ich tun wollte, war, alles rückgängig zu machen, was ich zum Brauen getan hatte.

Ich habe mein Wechselgeld begangen, aber es hat die Sache noch schlimmer gemacht. Schließlich musste ich meine Commits rückgängig machen und git reset --hard HEAD~1bis ich am richtigen Commit-ish war. Ich hatte auch ein Durcheinander von nicht versionierten Dateien (ich habe die Dateiberechtigungen in / usr / Local geändert), also habe ich eine git clean -f -dDatei erstellt, bei der alle nicht konvertierten Dateien und Verzeichnisse entfernt wurden, und bin zu meinem Ausgangspunkt zurückgekehrt, bevor ich Änderungen vorgenommen habe.


3
Diese Antwort funktionierte (einschließlich des Rückgängigmachens von Git-Chaos), wobei ich als Top-Antwort ein Git-Problem hatte.
Steve M

Sehr nützlich nach dem Upgrade Ihres Systems! Dank
Codierung süchtig

Dies schlägt in El Capitan mit "ln: Operation nicht erlaubt" aufgrund des Rootless-Modus fehl. Eine Problemumgehung
Jorge Ortiz

37

Schritte zur Behebung:

  1. Installieren Sie die Befehlszeilentools für Xcode 6

  2. Gebräu neu installieren:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. Sobald das Gebräu installiert ist, funktioniert rvm:

    rvm install ruby

Hat für mich gearbeitet, yahoo!


Ich habe Rubin und läuft, aber das ist immer noch nicht funktioniert für mich: stackoverflow.com/questions/24113251/...
eden

Ich habe rvm und nginx vollständig entfernt und nach der Installation der Xcode 6-Entwicklertools neu installiert. Jetzt funktioniert es wie ein Zauber.
Ohne

1
Dies funktionierte auch für mich, wollte nur klarstellen, wie dieser Befehl für Schritt 1 ausgeführt werden soll: xcode-select --install
James Toomey

33

Das Bearbeiten des Skripts bedeutet, dass brew updatees nicht funktioniert. Es gibt lokale Änderungen an verfolgten Dateien, die git pullzum Fehlschlagen führen.

Ich habe das getan, was ich für sauberer halte:

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

Es gibt keine Beschwerden von brew doctor.


Wenn ich dies tue, erhalte ich eine Fehlermeldung über nicht verfolgte Dateien, die vor dem Zusammenführen verschoben werden müssen. Dies sind alles Dateien in Library / Formula /.
8.

Angenommen, Sie haben nichts bearbeitet. Wenn mir das passiert, bedeutet dies, dass ich brew doctoreinige Anweisungen ausführen und befolgen muss. Das Problem ist, dass brew doctores bei Ihnen wahrscheinlich nicht funktioniert, wenn Sie hier sind. Möglicherweise können Sie einfach git stashweitermachen.
Otto

7

Dies ist ein Konglomerat aus Antworten aus den Posts anderer Leute sowie ein bisschen Graben bei Google, aber ich dachte, ich würde es so aufstellen, dass eine vollständige Antwort an einem Ort ist. Insbesondere funktioniert dies jetzt, aber Sie können auch wie gewohnt Brau-Updates durchführen und alles wieder sauber machen.

  1. Öffnen Sie /usr/local/Library/brew.rb (emacs / vi / nano / was auch immer)
  2. Ändern Sie die erste Zeile zu lesen : #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Sie ändern nur die "1.8", die in dieser Zeile stand, in "Current" (stellen Sie sicher, dass Sie das Großbuchstaben "C" behalten, sonst wird git später verwirrt).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(oder sudo brew updatewenn Ihr Gebräu so eingerichtet ist, dass nur Systemänderungen mit sudo vorgenommen werden)

Gutschrift: Vieles davon kam von hier , obwohl ich wirklich davon abraten würde, es git commit -amin Ihrem / usr / local-Ordner zu tun .


Dies ist die einzige Lösung, die für mich funktioniert hat. Wegen der häufigen super hässlichen Unordnung wie dieser entferne ich mich für meine nächste App von Ruby and Rails.
Deborah

3

Wie zuvor gesagt: 1) Zum aktuellen wechseln 2) xcode 6 installieren

Wenn Sie jetzt weitere Probleme mit Brew und Ruby haben, sollte dies helfen: Irgendwie benötigt Brew in Version 1.8 Ruby, also erstellen Sie den Ordner:

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

und mache einen Symlink:

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

Vielen Dank! Dies war die einzige Lösung, die für mich funktioniert hat;)
Alejandromp


1

Ich habe das wie folgt behoben:

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


0

Hinweis: Führen Sie die folgenden Schritte nur aus, wenn Sie sich in einem vollständig ausgefallenen Zustand befinden, da dies sehr GEFÄHRLICH ist

Als Beispiel bekam ich immer wieder

$ sudo ln -s Current 1.8

$ Brew Update

/usr/local/Library/brew.rb:18:in ': undefinierte Methodenhilfe?' für ["Update"]: Array (NoMethodError)

Ich bekomme nur das ... (egal welcher Befehl einfach "Update" mit dem Befehl ausschalten) Ich habe das Problem gelöst, indem ich nach einem Buddy- /usr/localOrdner gefragt habe . Ich habe dann eine Sicherungskopie meines /usr/localOrdners erstellt.

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

Ich habe dann seine /usr/localzu meiner verschoben

sudo mv ~ / Downloads / local / usr / local

Hinweis: Sie werden wahrscheinlich einige Daten verlieren. Stellen Sie daher sicher, dass Sie ein Backup erstellen.


-1

Ich hatte Probleme beim Versuch, Ruby mithilfe von Paketmanagern zu installieren. Um diesen Programmen gerecht zu werden, gebe ich zu, wenig Erfahrung mit ihnen zu haben und habe mich nicht wie die meisten anderen Antwortenden bemüht, tiefer zu graben. Ich bin faul und bevorzuge die Verwendung eines binären Installationsprogramms, das für die meisten Opsys-Optionen und viele Pakete verfügbar ist. Leider scheint Ruby keinen zu liefern.

Ich fand Ruby-Build einfach zu installieren (eigenständig - nicht das Plugin), und es baute Ruby fehlerfrei aus Quellen und platzierte es dort, wo ich es wollte.

Bingo - einfach :) Dies scheint eine gute Alternative für diejenigen von uns zu sein, die vom Paketmanager herausgefordert wurden.

Charlie

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.