Das Brauen in MAC OS X el capitan kann nicht aktualisiert werden, und es wird weiterhin ein Ladefehler mit "require" angezeigt

69

Ich bin nicht sicher, warum dies geschieht, aber ich kann Brew in meinem MAC OS X El Capitan nicht aktualisieren. Ich tat:

brew update

und bekam:

warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied

Um dieses Problem zu lösen, habe ich den obigen Befehl sudoed, aber weitere Probleme bekommen:

sudo brew update
Password:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:16:in `<main>'

Wenn ich jetzt eine Brauinstallation mache, bekomme ich:

brew update

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:16:in `<main>'

Tatsächlich scheint es, dass immer, wenn ich etwas tue, wie nur tippen brew, die gleiche Nachricht angezeigt wird. Weiß jemand, wie man das behebt?

Charlie Parker
quelle
2
Dies ist wahrscheinlich eine super hackige Lösung, aber ich habe Homebrew vollständig deinstalliert und neu installiert. Zum Deinstallieren lesen Sie: quora.com/How-does-one-uninstall-Homebrew
Charlie Parker
1
Mögliches Duplikat von Homebrew funktioniert nicht unter OSX
Ivan Chau
Homebrew wurde aktualisiert, um das Problem des /usr/localEigentums anzugehen . Wenn Sie Homebrew seit einiger Zeit nicht mehr aktualisiert haben, befolgen Sie die unten unter @bfontaine beschriebenen Schritte. Nach der Aktualisierung können Sie den Besitz wieder herstellen, root:wheelindem Sie sudo chown root:wheel /usr/localHomebrew ausführen und weiterhin verwenden und aktualisieren, ohne sich um den Besitz der Datei sorgen zu müssen.
Sandeep M

Antworten:

249

Sie sollten nicht sudomit Homebrew verwenden. Führen Sie zunächst Folgendes aus, um sicherzustellen, dass Sie alles unter besitzen /usr/local:

sudo chown -R $(whoami):admin /usr/local

Alternativer Befehl für neuere MacOS-Version:

sudo chown -R $(whoami) $(brew --prefix)/*

Setzen Sie dann Ihr Homebrew-Repo auf einen sauberen Zustand zurück:

cd /usr/local && git fetch && git reset --hard origin/master

Es sollte Ihre Probleme beheben.

(ersetzen /usr/localdurch, $(brew --prefix)wenn Sie Homebrew an anderer Stelle installiert haben)

bfontaine
quelle
3
Ich lief, sudo chown -R $(whoami):admin /usr/localaber das Terminal gab nichts aus. Was sollte ich sehen?
Charlie Parker
Sind Sie sicher, dass Sie den Eigentümer wirklich in einen Benutzer ändern möchten /usr/local? Es scheint mir sehr falsch, obwohl es funktionieren kann.
Totoro
1
@CharlieParker unix filesystem layout-> en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .
Totoro
2
Ich habe dies in den Homebrew-FAQ in Github gefunden , die meiner Meinung nach für diese Antwort relevant sind: " Warum bevorzugt Homebrew die Installation /usr/local? ... 3. Es ist sicher, dass Apple dieses Verzeichnis für uns verlassen hat. Das heißt, es gibt kein /usr/localVerzeichnis von Standard, sodass Sie sich keine Sorgen machen müssen, vorhandene Tools durcheinander zu bringen. "
Alondono
1
Möglicherweise müssen Sie danach auch noch etwas brew updatereparieren.
Dmytro Korduban