Aufwertung des Suds in El Capitan

38

Ich habe gerade ein Upgrade auf durchgeführt El Capitan, und als ich versuchte, ein Update brewdurchzuführen, wurde der folgende Fehler angezeigt:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

Bevor ich mit der chownEmpfehlung fortfahre , ist dies der richtige Weg, da El Capitan gerade herausgekommen ist? Warum ist dieser Schritt erforderlich und welche potenziellen unerwünschten Folgen hat die Ausführung dieses Befehls?

Falls es hilft, habe ich zwei Probleme mit El Capitan gefunden brew: 40837 und 41665, aber eine Lösung für dieses Problem war nicht sofort klar. Was kann ich tun, um brewEl Capitan weiterhin zuverlässig zu nutzen?

Amelio Vazquez-Reina
quelle
2
Nun, haben Sie, wie in der Nachricht vorgeschlagen, den Besitzer gewechselt /usr/local?
user3439894
Dies wirft eine ausgezeichnete Frage für den Fall auf, dass mehrere Benutzer (oder ein Benutzer mit mehreren Konten mit unterschiedlichen Profilen) auf demselben Computer arbeiten.
Walt Stoneburner
4
Tippen sudo chown -Rgibt mir die Willies. Es spielt keine Rolle, wie die anderen Parameter lauten. Ich habe mehr als Homebrew dabei /usr/localund es ist kein offensichtlich sicherer Befehl. Ich habe über Time Machine bestätigt, dass ich chownausschließlich El Capitan /usr/localund keine Unterverzeichnisse installiere . Ich war so in der Lage zu entkommen mit einem nicht-rekursive Rückfall zu tun, das heißt sudo chown $(whoami):admin /usr/local. YMMV.
Duozmo
@duozmo ist richtig. Der -Rin sudo chown -Rwirklich schweren geben. Das ist gleichbedeutend damit, dass Brew die Domain für die gesamte /usr/local
Dauer

Antworten:

31

Ich meine, sie geben Ihnen genau dort die Lösung. Ich hatte das gleiche Problem und bin einfach gelaufen:

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

und es hat funktioniert.

Anzeigename
quelle
1
+1 Ich musste auch die Berechtigungen meines Benutzers wie beschrieben zurücksetzen. Keine weiteren Probleme nach diesem kleinen Tweak - Homebrew und meinen Paketen waren am 10.11 sehr zuverlässig.
bmike
22
Dies beantwortet die Frage nicht wirklich: Man könnte annehmen, dass Apple / usr / local aus einem bestimmten Grund gesperrt hat und dass dieses Update NICHT für El Capitan geeignet ist. Ich google jetzt, um zu sehen, ob Apple eine Anleitung bietet. Die Frage ist: "... ist das der richtige Weg, wenn man bedenkt, dass El Capitan gerade herausgekommen ist?"
Michael Welch
1
@MichaelWelch Die Antwort wurde vor dieser Bearbeitung gepostet.
DisplayName
1
Sorry @DisplayName Ich hätte mir die Zeitstempel ansehen sollen.
Michael Welch
2
Das ist die richtige Antwort. Siehe github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… - Ich bin gelaufen $ brew doctorund habe festgestellt, dass eine flacAbhängigkeit fehlt. Nachdem $ brew install flacich noch $ brew updateein paar Mal hartnäckig laufen musste .
Ando
9

Wir müssen uns darüber nicht mehr den Kopf zerbrechen. Ich habe den Rat riskiert und die vorgeschlagene Berechtigungsänderung durchgeführt. Beim Update auf das neueste Homebrew habe ich dann die beruhigende Nachricht erhalten:

Homebrew muss nicht länger im Besitz von / usr / local sein. Wenn Sie möchten, können Sie / usr / local mit: sudo chown root: wheel / usr / local auf seinen Standardbesitz zurücksetzen

JannieT
quelle
Wie kann man dieses Problem lösen?
Rajesh Maurya
@ RajeshMaurya verwenden Sie die Lösung von Karolus
JannieT
8

Bei einigen der oben genannten Sicherheitsfragen enthält das Dialogfeld Anweisungen zum Zurücksetzen nach einem erfolgreichen Brühupdate. Nach dem Rennen

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

Und dann

brew update

Nachdem das Update erfolgreich ausgeführt wurde, sollte im Dialogfeld Folgendes angezeigt werden:

sudo chown root:wheel /usr/local

Nachdem dies ausgeführt wurde, sollte dies alle Sicherheitsbedenken mit MacOS 10.12 beseitigen

Karolus
quelle
chown: / usr / local: Operation nicht erlaubt
Rajesh Maurya
6

Die angegebene Lösung hat bei mir nicht funktioniert:

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

Diese Variante hat bei mir funktioniert:

sudo chown -R $USER /usr/local/

Brian Spiering
quelle
1
sudo chown -R $ USER / usr / local / arbeitete für mich auf dem neuesten MacOS
Alex Trott
1
chown: / usr / local /: Operation nicht erlaubt
Rajesh Maurya
fügen Sie hinzu sudound geben Sie das root-Passwort ein
Brian Spiering
1
Wird immer noch angezeigt: / usr / local /: Vorgang nicht zulässig, auch wenn ich das root-Passwort eingebe.
2myCharlie
0

Ich behebe es mit diesem Befehl sudo chown -R admin /usr/local.

Lee Li
quelle
-1

bitte schau auf den SIP mit:

csrutil status

Der Systemintegritätsschutz ist auf "enable" festgelegt, wobei das letzte Apple-Attribut "restricted" lautet:

csrutil 
Bigben
quelle
3
Wie löst dies das in der Frage angegebene Problem?
Nohillside
-1

Es hat bei mir funktioniert.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
quelle
1
Beide Lösungen funktionieren bei mir nicht. Es zeigt immer noch: chown: / usr / local: Operation nicht erlaubt
2myCharlie
-2

Der Systemintegritätsschutz muss deaktiviert werden. Sie können es damit machen.

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

Dadurch wird der systemweite Schutz der Systemintegrität deaktiviert. Ich glaube, Sie können es auch vom Wiederherstellungsmodus aus tun. Wenn Sie mit sudo arbeiten, müssen Sie immer noch Ihr root-Passwort eingeben, aber Sie sind nicht durch SIP gesperrt. Sie öffnen dann auch nicht versehentlich Verzeichnisse, um Berechtigungen festzulegen.

Harry McGovern
quelle
3
Es ist nicht erforderlich, SIP zu deaktivieren, um die Inhaberschaft unten zu ändern /usr/local.
Nohillside