webentwicklung-frage-antwort-db.com.de

So beheben Sie die Berechtigungen für das Home-Brew in MacOS High Sierra

Als ich versuchte, Python auf Home-Brew zu installieren, wurde es heruntergeladen und am Ende wurde eine Fehlermeldung angezeigt, die den Abschluss des Vorgangs verhinderte. Wenn ich es noch einmal versuche, fragt es mich:

$ brew link python

Nach der Eingabe erscheint die gleiche Fehlermeldung:

$ Sudo chown -R $(whoami) /usr/local

Und ich erhalte eine Fehlermeldung, die lautet: "Chown:/usr/local: Vorgang nicht zulässig"

27
Jonathan
Sudo mkdir /usr/local/Frameworks
Sudo chown $(whoami):admin /usr/local/Frameworks    
brew link python3
54
gfly

Ich habe versucht und hatte dieselbe (ich denke) Ausgabe:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

Also habe ich ein Verzeichnis/usr/local/Frameworks als root angelegt und dann den Besitzer geändert:

Sudo mkdir /usr/local/Frameworks && chown $USER:admin /usr/local/Frameworks

Ich habe es noch einmal versucht brew install python:

Warning: python 2.7.14 is already installed, it's just not linked.
You can use `brew link python` to link this version.

Und dann brew link python:

Linking /usr/local/Cellar/python/2.7.14... 26 symlinks created

Jetzt im Verzeichnis /usr/local/Frameworks/Python.framework/ kann ich Links sehen, zum Beispiel:

lrwxr-xr-x 1 niquit admin  62 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Headers -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Headers/
lrwxr-xr-x 1 niquit admin  61 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Python -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Python*
lrwxr-xr-x 1 niquit admin  64 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Resources -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Resources/

In Ihrem Fall empfehle ich die manuelle Erstellung von/usr/local/lib:

Sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib

A machte einen Test von mv /usr/local/lib{,.orig} und ich bekam:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/lib
Error: Permission denied @ dir_s_mkdir - /usr/local/lib

Wie zuvor habe ich das Verzeichnis Sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib manuell erstellt und erfolgreich durchgeführt: brew link python:

Linking /usr/local/Cellar/python/2.7.14... 324 symlinks created

Nun kann ich einige Links finden:

lrwxr-xr-x 1 niquit admin  54 Dec  8 22:01 python-2.7.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python-2.7.pc
lrwxr-xr-x 1 niquit admin  50 Dec  8 22:01 python.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python.pc
lrwxr-xr-x 1 niquit admin  51 Dec  8 22:01 python2.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python2.pc

Ich denke, dass Apple nach dem neuesten Update die Sicherheit erhöht hat, so dass es nicht möglich ist, jetzt ein Verzeichnis in/usr/ohne Root-Berechtigung zu erstellen.

8
Niquit

/usr/local kann in High Sierra nicht mehr aufgerufen werden. Verwenden Sie stattdessen

Sudo chown -R $(whoami) $(brew --prefix)/*
6
H. Gourlé

Durch die Deinstallation und Neuinstallation von Homebrew wird das Problem behoben.

4
Walrus the Cat

Führen Sie dies aus und befolgen Sie die Vorschläge:

brew doctor

In meinem Fall wollte ich, dass ich renne:

Sudo mkdir -p /usr/local/sbin /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/sbin /usr/local/Frameworks
2
Chris

Ich habe Brew neu installiert und das Problem behoben. 

zum Deinstallieren verwenden Sie den folgenden Befehl. 

Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

und brauen Sie erneut ein. 

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

In meinem Fall mit MacOS 10.14 Neuinstallation auf einem neuen Rechner:

brew doctor

Und es schlägt vor:

Sudo mkdir -p /usr/local/lib /usr/local/sbin
Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin
1
Bill Chan
brew doctor

Dieser Befehl, wie er oben in den Kommentaren von Chris vorgeschlagen wurde, beinahe ALLE Probleme, die auf einem Mac Mini 2011 5.1 auf einem Mac Mini 2011 5.1-System aufgetreten sind und inoffiziell MacOS Mojave ausführen. Geben Sie einfach das ein und befolgen Sie alle Anweisungen, die das Terminal druckt

1
Tyler Kehrein

macOS bietet eine Reihe von Möglichkeiten, den Zugriff auf Dateien zu steuern, die über die herkömmlichen Berechtigungen für Benutzer, Gruppen und andere hinausgehen. Dazu gehören Zugriffssteuerungslisten (ACLs), Dateikennzeichen, erweiterte Attribute (Xattrs) und in jüngster Zeit der Systemintegritätsschutz von Apple.

Ich wette, wenn Sie ls -lO /usr/ ausführen, um die Flags aufzulisten, sehen Sie uchg vor /usr/local, was das System anweist, die Datei für jeden Benutzer unveränderlich zu machen. (Die Variable u in uchg bedeutet, dass der Besitzer der Datei dieses Flag ändern darf. Weder der Eigentümer noch ein anderer Benutzer darf die Datei selbst ändern.)

Um das Problem zu lösen, müssen Sie zunächst das Flag entfernen, indem Sie Folgendes ausführen: chflags nouchg /usr/local. Dadurch sollte das Flag uchg entfernt werden, das Sie erneut mit ls -lO überprüfen sollten. Wenn ein anderes Flag wie schg gesetzt ist, verwenden Sie im Allgemeinen noschg oder no<flag>. Sie müssen jedoch Sudo die Befehle eingeben, wenn das Flag mit s beginnt.

An diesem Punkt müssen Sie möglicherweise noch das Verzeichnis chown mit Sudo chown -R $(whoami) /usr/local eingeben. Sie sollten jetzt das Verzeichnis besitzen, und die Homebrew-Tools sollten einwandfrei funktionieren.

0
bnaecker

Ich habe das einfach gemacht und es hat gut funktioniert:

Sudo touch /usr/local/Frameworks
brew link python
0
charles ross
Sudo mkdir /usr/local/Frameworks

Sudo chown $USER /usr/local/Frameworks

Versuchen Sie dann, Python erneut zu installieren. Das hat absolut gut für mich funktioniert.

0
Shaul Hameed

Wie bereits erwähnt, können Backticks von henrikstroem hilfreich sein, und wie von bnaecker erwähnt, können spezielle Attribute den Prozess behindern.

Sie können auch versuchen, den Befehl direkt als root auszuführen, um bessere Ergebnisse zu erhalten, indem Sie Sudo su - und dann chown -R username /usr/local ausführen.

Aber sind Sie sicher, dass Sie wirklich wollen, was Sie wollen? Es könnte interessanter sein, eine Gruppe zu erstellen, die Zugriff darauf hat (z. B. chown -R originaluser:group /usr/local), die gewünschten Rechte festlegen und/oder Ihren Benutzer in diese Gruppe aufnehmen .

0
user1747036