Wie aktualisiere ich Bash mit Brew (Berechtigungsfehler)?

Ich arbeite mit Yosemite (10.10.3) und möchte ein Upgrade bash(auf Version 4.x) durchführen und habe diesen Beitrag gefunden . Nach brew updatehabe ich getan brew install bash, aber erhalten:

==> Downloading https://homebrew.bintray.com/bottles/bash-4.3.33.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring bash-4.3.33.yosemite.bottle.tar.gz
==> Caveats
In order to use this build of bash as your login shell,
it must be added to /etc/shells.
Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied - /usr/local/share/locale/af
Error: Permission denied - /usr/local/share/locale/af

Wie kann ich das beheben? Ich habe cdhineingeblättert, /usr/local/share/localeaber das Verzeichnis afexistiert nicht. Warum versucht Brew darauf zuzugreifen?

Aktualisieren

Ich habe vergessen zu sagen, wenn ich verwende sudo brew install bash, erhalte ich:

Error: Cowardly refusing to `sudo brew install`
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.
Öffnen Sie ein Terminalfenster und sudo chown -R <yourusername> /usr/local ?
Mach das nicht. Wenn Sie dies tun, öffnen Sie eine große Sicherheitslücke.

Antworten (2)

Sie müssen sicher sein, dass die Gruppe von /usr/localund alles darin enthalten ist admin(ich nehme an, Ihr Benutzername gehört auch zur adminGruppe). Wenn dies nicht der Fall ist, beheben Sie es mit:

sudo chown -R $USER:admin /usr/local

Sie müssen wahrscheinlich dasselbe tun bei /Library/Caches/Homebrew:

sudo chown -R $USER:admin /Library/Caches/Homebrew
Hallo, danke für die Hilfe. Das habe ich getan (ja, mein Benutzername gehört zur Admin-Gruppe). Danach brew install bashgab Warning: bash-4.3.33 already installed, it's just not linked. Aber brew link bashgab Linking /usr/local/Cellar/bash/4.3.33... Error: Permission denied - /usr/local/share/locale/af. Wie ich in meinem Beitrag sagte, existiert der Unterordner afvon /usr/local/share/localenicht. Soll ich es erstellen? Warum will Brew dort installieren/linken?
Installieren Sie es neu. brew uninstall bashund dann brew install bash.
... genau das habe ich auch versucht. Und endete mit dem gleichen Ergebnis (erhalten Error: An unexpected error occurred during the 'brew link' stepwegen des Fehlers "Erlaubnis verweigert"). Ich habe viele Dinge mit Brew installiert und es hat immer funktioniert. Aber das Unterverzeichnis afwurde anscheinend nie erstellt.
Können Sie eine Datei erstellen, um /usr/localzu testen, ob Sie dort Berechtigungen haben?
Ich habe ein Verzeichnis und eine Datei erstellt, beide haben funktioniert.
Seltsam. Als letztes versuchen Sie, eine Neuinstallation zu erzwingen ( brew install bash --force). Dies sollte alle zuvor kopierten Dateien ersetzen.
Ich erhalte erneut Warning: bash-4.3.33 already installed, it's just not linkedund wenn ich dies tue brew link bash, wird der Fehler "Berechtigung verweigert" erneut angezeigt. Ich habe dann afvon Hand erstellt. brew hat nach LC_MESSAGES gesucht, also habe ich das einfach aus dem Unterverzeichnis kopiert de. Musste ihm Schreibrechte geben, aber dann habe ich die gleiche Warnung erhalten, dass die Erlaubnis verweigert wurde, jetzt für /usr/local/share/locale/bg... hmmm ... es scheint, dass dies Ländercodes sind ... Ich frage mich, wie viele ich vermisse ...
Ich rannte brew doctorund der erste Eintrag sagte das Warning: Some directories in /usr/local/share/locale aren't writable. This can happen if you "sudo make install" software that isn't managed by Homebrew. If a brew tries to add locale information to one of these directories, then the install will fail during the link step. You should probably 'chown' them... aber @Froggard schlug vor, das nicht zu tun ...
OK, ich verstehe. Versuchen Sie Folgendes: cd /usr/local/; sudo chown -R your-username *. Dann bash neu installieren.
Hallo, das hat funktioniert, danke. Ich musste bash über registrieren sudo bash -c "echo /usr/local/bin/bash >> /private/etc/shells"(für alle, die sich dafür interessieren)

Diese Linie:

sudo chown -R $USER:admin /usr/local

Hat für mich funktioniert.

Willkommen bei Ask Different. Wir möchten, dass Antworten mehr als nur eine einzelne Zeile sind. Idealerweise möchten Sie erklären, warum Ihre Antwort *richtig ist.“ Es hilft auch, Links, Zitate und/oder Screenshots bereitzustellen. Bitte lesen Sie unseren Hilfeabschnitt Wie man antwortet, um gute Antworten auf Fragen zu schreiben