806 Stimmen

Wie repariere ich Homebrew-Berechtigungen?

Ich habe Homebrew jetzt schon 3 Mal deinstalliert und installiert, weil es mir anscheinend nie erlaubt, irgendetwas zu installieren, da es mir am Ende der meisten Installationen Berechtigungen verweigert.

Als Beispiel werde ich hier das aktuelle Szenario des Libjpeg-Downloads posten, mit dem ich gerade konfrontiert bin.

Ich versuche, libjpeg zu installieren und erhalte:

$ 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' führt zu

Error: Permission denied - /usr/local/opt/jpeg

Hier ist, was mein Brew-Doktor sagt

$ 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

Dieses Berechtigungsproblem macht es unmöglich, Brew für irgendetwas zu nutzen, und ich würde mich über jede Empfehlung sehr freuen.

4voto

Bilal Punkte 2256

Ich bin auf Catalina und habe diesen Fehler bekommen:

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Berechtigung verweigert
touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/.git/FETCH_HEAD: Berechtigung verweigert
fatal: Kann '/usr/local/Homebrew/.git/index.lock' nicht erstellen: Berechtigung verweigert
fatal: Kann '/usr/local/Homebrew/.git/index.lock' nicht erstellen: Berechtigung verweigert

Ich musste nur das Verzeichnis Homebrew chownen

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

4voto

TheProletariat Punkte 766

Es gibt ein Killer-Skript auf Github, das Berechtigungen für die Verzeichnisse /usr/local und brew so fixiert, dass sie von allen zugänglich sind, die Mitglieder der Gruppe 'admin' sind.

https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925

Dies ist eine bessere Lösung als die gewählte Antwort, da Sie, wenn Sie die Verzeichnisse /usr/local/___ auf $USER chown, alle anderen Admin-Benutzer von Homebrew auf diesem Rechner deaktivieren.

Hier sind die Kernpunkte des Skripts zum Zeitpunkt meiner Veröffentlichung:

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

2voto

Abid Khairy Punkte 1128

Deinstalliere brew & installiere es erneut mit dem folgenden Befehl, um sicherzustellen, dass die Verknüpfung zum brew github und die zugehörigen Berechtigungen für den lokalen Ordner korrekt funktionieren:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Dies hat perfekt funktioniert. Kein Herumspielen mit Berechtigungen, ich habe einfach Homebrew neu installiert und es funktioniert!

Quelle: https://gist.github.com/irazasyed/7732946#gistcomment-2298740

1voto

Girish Gupta Punkte 1143
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks

1voto

Jaxon Isack Punkte 21

Wenn Sie mehrere Konten auf Ihrem Mac haben, besteht die Möglichkeit, dass Ihr aktuelles Konto einer anderen Benutzergruppe als das primäre Konto gehört, das ursprünglich /usr/local besaß, was bedeutet, dass keines der oben genannten Lösungen funktionieren wird.

Sie können das überprüfen, indem Sie versuchen, ls -la /usr/local ausführen und sehen, welcher Benutzer und welche Gruppe Berechtigungen zum Schreiben in das Verzeichnis haben. In meinem Fall war es root wheel. Es könnte auch root admin sein.

Ich habe das gelöst, indem ich den aktuellen Benutzer zur Gruppe hinzugefügt habe, die das primäre Konto hat, indem ich den folgenden Befehl verwendet habe.

sudo dseditgroup -o edit -a $(whoami) -t user admin
sudo dseditgroup -o edit -a $(whoami) -t user wheel

Danach hat es wunderbar funktioniert. Hoffentlich hilft es jemandem da draußen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X