Ich habe Homebrew jetzt 3 Mal deinstalliert und installiert, da es mir anscheinend niemals erlaubt ist, irgendetwas zu installieren, da mir am Ende der meisten Installationen Berechtigungen verweigert werden.
Als Beispiel werde ich dieses Libjpeg-Download-Szenario veröffentlichen, mit dem ich gerade konfrontiert bin.
Ich versuche libjpeg zu installieren und bekomme:
$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg
'Brew Link JPEG' ergibt
Error: Permission denied - /usr/local/opt/jpeg
Hier lesen meine Braudoktorinnen
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:
jpeg
Diese Erlaubnisfrage hat es unmöglich gemacht, brew mit irgendetwas zu verwenden, und ich würde mich über Anregungen sehr freuen.
Ich konnte das Problem mithilfe von chown
für den Ordner lösen:
Sudo chown -R "$USER":admin /usr/local
Sie müssen (wahrscheinlich) dasselbe auch für /Library/Caches/Homebrew
tun:
Sudo chown -R "$USER":admin /Library/Caches/Homebrew
Anscheinend hatte ich Sudo
zuvor so verwendet, dass meine Ordnerberechtigung für /usr/local
, Geändert wurde. Von nun an haben sich alle Installationen mit brew als erfolgreich erwiesen.
Diese Antwort stammt von gitHub's Homebrew Issue Tracker
Neuer Befehl für Benutzer unter macOS High Sierra, da es nicht möglich ist, chown
auf /usr/local
Zu setzen:
Sudo chown -R $(whoami) $(brew --prefix)/*
Als erste Option für alle, die wie ich hier landen, folgen Sie den Anweisungen, die Sie vorschlagen:
brew doctor
Es ist der sicherste Weg und unter anderem hat es mir empfohlen,
Sudo chown -R $(whoami) /usr/local
welches das Berechtigungsproblem gelöst hat.
Das OP hat genau das getan, aber anscheinend wurde der obige Vorschlag nicht verstanden. Sie könnten und es ist immer besser, dort zu beginnen und dann nur nach nicht trivialen Lösungen zu suchen, wenn dies nicht geholfen hat.
Wenn Sie sich in OSX High Sierra befinden, kann /usr/local
Nicht mehr chown
'd sein. Sie können verwenden:
Sudo chown -R $(whoami) $(brew --prefix)/*
Ich hatte dieses Problem ... Eine funktionierende Lösung besteht darin, den Besitzer von /usr/local
in den aktuellen Benutzer anstelle von root
zu ändern:
Sudo chown -R $(whoami):admin /usr/local
Aber das ist wirklich kein richtiger Weg. Hauptsächlich, wenn Ihr Computer ein Server oder mehrere Benutzer ist.
Mein Vorschlag ist, den Eigentümer wie oben beschrieben zu ändern und zu tun, was immer Sie mit Brew implementieren möchten. (Aktualisieren, Installieren usw.)
Sudo chown -R root:admin /usr/local
Das würde das Problem lösen und den Besitz in der richtigen Menge halten.
Befehl von oben gewählt Antwort arbeite nicht für mich.
Es wurde ausgegeben:
chown:/usr/{mein_Benutzername} dmin: unzulässiger Benutzername
Dieser Befehl funktioniert gut (Gruppe für/usr/local war admin
bereits):
Sudo chown -R $USER /usr/local
Wenn Sie einen etwas zielgerichteteren Ansatz als die Decke chown -R
wünschen, können Sie dieses fix-homebrew
script nützlich finden:
#!/bin/sh
[ -e `which brew` ] || {
echo Homebrew doesn\'t appear to be installed.
exit -1
}
BREW_ROOT="`dirname $(dirname $(which brew))`"
BREW_GROUP=admin
BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md"
echo "This script will recursively update the group on the following paths"
echo "to the '${BREW_GROUP}' group and make them group writable:"
echo ""
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir "
} ; done
echo ""
echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate."
echo ""
read -p 'Press any key to continue or CTRL-C to abort.'
echo "You may be asked below for your login password."
echo ""
# Non-recursively update the root brew path.
echo Updating "$BREW_ROOT" . . .
Sudo chgrp "$BREW_GROUP" "$BREW_ROOT"
Sudo chmod g+w "$BREW_ROOT"
# Recursively update the other paths.
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && (
echo Recursively updating "$BREW_ROOT/$dir" . . .
Sudo chmod -R g+w "$BREW_ROOT/$dir"
Sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir"
)
} ; done
# Non-distructively move any git crud out of the way
echo Stashing changes in "$BREW_ROOT" . . .
cd $BREW_ROOT
git add .
git stash
git clean -d -f Library
echo Finished.
Anstatt eine chmod
für Ihren Benutzer auszuführen, erhält die admin
-Gruppe (zu der Sie vermutlich gehören) Schreibzugriff auf die spezifischen Verzeichnisse in /usr/local
, die von der Homebrew verwendet werden. Es sagt Ihnen auch genau, was Sie tun möchten, bevor Sie es tun.
Ich wollte mich noch nicht mit Ordnerberechtigungen herumschlagen, also habe ich Folgendes getan:
brew doctor
brew upgrade
brew cleanup
Ich konnte dann meine weitere Brühreife erfolgreich installieren.
In meinem Fall gab es die/usr/local/-Frameworks nicht einmal.
Sudo mkdir /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
Und dann hat alles wie erwartet funktioniert.
Dies löste das Problem für mich.
Sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
Sudo chown -R "$USER":admin /usr/local
Ich habe mein Problem mit diesen Befehlen gelöst:
Sudo mkdir /usr/local/Cellar
Sudo mkdir /usr/local/opt
Sudo chown -R $(whoami) /usr/local/Cellar
Sudo chown -R $(whoami) /usr/local/opt
Ich hatte den /user/local/Frameworks
-Ordner nicht, daher wurde dieser Fehler behoben
Sudo mkdir -p /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
Ich habe OSX High Sierra
Alle diese Vorschläge können funktionieren. In der neuesten Version des Braudoktors wurden jedoch bessere Vorschläge gemacht.
Erstens: Beheben Sie das Chaos, das Sie wahrscheinlich bereits aus /usr/local
gemacht haben, indem Sie es in der Befehlszeile ausführen:
Sudo chown -R root:wheel /usr/local
Dann übernehmen Sie die Pfade, die speziell für diesen Benutzer bestimmt sein sollten:
Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale
Alle diese Informationen sind verfügbar, wenn Sie Sudo brew update
ausführen und dann alle Warnungen und Fehler lesen, in denen Sie auftreten werden.
Auf github gibt es ein Killerskript, das die Dauer der Perms in/usr/local und die Brew-Verzeichnisse so fixiert, dass jeder, der Mitglied der Gruppe "admin" ist, darauf zugreifen kann.
https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925
Dies ist eine bessere Lösung als die gewählte Antwort. Wenn Sie die Verzeichnisse/usr/local/___ auf $ USER setzen, brechen Sie alle anderen Admin-Benutzer von Homebrew auf diesem Computer.
Hier sind die Hintergedanken des Skripts zu der Zeit, als ich dies gepostet habe:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
Bei mir funktionierte es danach
brew doctor
Änderungsberechtigungsbefehle führten zu einem anderen Fehler
chown: /usr/local: Operation not permitted
In meinem Fall habe ich Probleme beim Entfernen und erneuten Installieren von SaltStack.
Nach dem Rennen:
ls -lah /usr/local/Cellar/salt/
Mir ist aufgefallen, dass der Gruppeninhaber "Mitarbeiter" war. (Übrigens, ich verwende macOS Mojave Version 10.14.3.) Die Mitarbeitergruppe könnte mit meiner Arbeitsplatzkonfiguration zusammenhängen, aber ich weiß es nicht genau. Trotzdem habe ich die Gruppe erhalten, um zu verhindern, dass ich etwas weiter zerstöre.
Ich lief dann:
Sudo chown -R "$USER":staff /usr/local/Cellar/salt/
Danach konnte ich es mit diesem Befehl erfolgreich entfernen (nicht als root):
brew uninstall --force salt
cd /usr/local && Sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
Eigentlich ist es wirklich einfach, diesen Befehl auszuführen: brew doctor
Und Sie erfahren, was Sie tun müssen, um Berechtigungsprobleme zu beheben, beispielsweise in meinem Fall:
Das war das Problem:
Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7
Und das war die Lösung:
You should change the ownership of these directories to your user.
Sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7
Wenn Sie nicht über das neueste Homebrew verfügen: Ich habe dieses Problem in der Vergangenheit "behoben", indem Sie Homebrew zwangsweise als Root ausgeführt haben, was nur durch Ändern des Besitzes der ausführbaren Dateien von Homebrew in Root möglich war. Irgendwann haben sie diese Funktion entfernt.
Und ich weiß, dass sie eine Menge Warnungen geben, die besagen, dass es nicht als root laufen sollte, aber komm schon, sonst funktioniert es nicht richtig.
Bei einem Mehrbenutzer-Mac funktionierte dies für mich:
Sudo chown -R $(whoami):admin $(brew --prefix)/*
Unter MacOS Mojave hatte ich auch keine Berechtigung, den Ordner/usr/local zu chown
(Sudo chown -R "$USER":admin /usr/local
).
Sudo chown -R "$USER":admin /usr/local/*
funktionierte jedoch für mich und änderte die Berechtigungen von allem innerhalb des lokalen Ordners.
Hoffentlich hilft dies anderen bei dem gleichen Problem.
Ich habe alles auf dieser Seite ausprobiert und diese Lösung verwendet:
brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;
Meine Situation war ähnlich wie bei der OP, mein Problem wurde jedoch insbesondere dadurch verursacht, dass Sudo mit Braufassing ausgeführt wurde und dann mein Passwort falsch war. Danach blieb ich bei den Berechtigungen, die die Installation verhindern.
So beheben Sie Fehler für die Brew-Berechtigungen für die Ordnerausführung
brew Prune
Dadurch werden die Probleme gelöst und wir müssen keine Verzeichnisse auswählen.