Wie macht man Dateien in `/usr/local` beschreibbar für Homebrew?

Ich habe versucht, Homebrew zum Laufen zu bringen, aber es scheint, dass alles darin /usr/localnicht beschreibbar ist und alles umfällt.

Es sagt mir immer wieder, dass ich es rekursiv tun chown /usr/localsoll, und das habe ich versucht. Operation verweigert, also habe ich es sudo gemacht. Es schien zu funktionieren, aber mit einer unheimlichen Stille, die ich höre, wird in Unix als höflich angesehen. Leider stoßen alle nachfolgenden Versuche auf brew updatedie gleiche Kakophonie von Fehlern.

Ich habe den Befehl mit erneut ausgeführt -vund es sieht so aus, als ob die Operation für nichts im Inneren zulässig ist.

So sehr die Antwort wahrscheinlich "Lernen Sie UNIX" lautet, ich versuche nur, einige Jobanforderungen hier für ein Tutorial zu Ruby zu erfüllen, das ist also ein paar Schritte über dem, wo ich gerade bin.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man 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:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Sagt brew doctorIhnen etwas Nützliches? Poste die Ausgabe hier.
@IanC. Es ist eine lange Liste von allem, was mit dem Brauen zu tun hat und nicht beschreibbar ist. Gibt es ein Stackexchange-Pastebin-Dienstprogramm? Es gibt unheimlich viel davon.
Nun, das ist seltsam. Es gibt jetzt viel weniger davon als vorher.
Nur zu Ihrer Information: Ich bin gerade gelaufen brew updateund habe festgestellt, dass "Homebrew nicht mehr Eigentümer von /usr/local" sein muss. Weitere Informationen in dieser Frage . Um an diesen Punkt zu gelangen, müssten Sie natürlich die Berechtigungen auf /usr/local vorübergehend aktualisieren :)
Kann mir jemand erklären, warum Mac unsere Berechtigungen entfernt hat?

Antworten (6)

Dies sollte gelöst werden, indem die Berechtigungen in diesem Verzeichnis auf folgende Weise geändert werden:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Wenn Sie Ihre Gruppe nicht kennen, geben Sie einfach ein id -g.

Der wichtige Teil ist -R, es rekursiv zu machen. Und Sie müssen wahrscheinlich die chownVerwendung von tun sudo. Für die Benutzergruppe verwende ich normalerweise staffOS X.
Interessant. Warum ist die Verwendung der Gruppe so anders als nur der Benutzer?
Das löste das erste Problem, aber jetzt habe ich ein anderes. Dafür stelle ich eine andere Frage, oder? Diesmal beschwert sich Brew über ein git .lock
Die Gruppe soll nur sicher sein, dass dies funktioniert, möglicherweise erforderlich ist oder nicht. Stellen Sie in Bezug auf Ihr neues Problem eine neue Frage.
Warum ist es richtig, dass /usr/local Ihrem Benutzer gehört? Ich denke, das ist ein Sicherheitsrisiko, da es viele andere Programme gibt, die /usr/local verwenden und stillschweigend übernommen werden könnten. Braucht Brauen wirklich so etwas Drastisches?
Ich halte das für gefährlich, da es die Gruppe „Staff“ auswählt, was bedeutet, dass jeder Benutzer des Betriebssystems dann den Inhalt von /usr/ ändern kann. Sie sollten wahrscheinlich zu "admin" wechseln.
@dfrankow ja, das ist ein Fehler von Homebrew. Sie haben nicht einmal darüber nachgedacht, was passiert, wenn zwei Benutzer auf derselben Maschine sind.
Ziemlich sicher, dass dies eine Sicherheitslücke schafft. Es ist jedoch der offizielle Lösungsvorschlag von Brew.
Es sagt mir immer wieder "r11g ist nicht in der sudoers-Datei. Dieser Vorfall wird gemeldet."
@dfrankow (und andere) Ja, es ist eine Sicherheitslücke und es ist erbärmlich für Homebrew. Grund genug, es nicht zu verwenden. Ich verwende stattdessen MacPorts. Unglücklicherweise möchte ich etwas mit Homebrew testen, aber es besteht keine Chance, während es die Übernahme von /usr/local erfordert.
Tatsächlich schreibt Sophos in /usr/local , also ist es einfach Wahnsinn, dem Benutzer das Verzeichnis zu überlassen. Ich bin mir sicher, dass Anwendungen das auch tun.

Sie müssen sudo verwenden , um den Befehl mit erhöhten Rechten auszuführen, wie folgt:

sudo chown -R `whoami` /usr/local/*
Ich tat. "Operation verweigert, also habe ich es sudo gemacht."
Für Fischschalenbenutzer wird es seinsudo chown -R (whoami) /usr/local
Dies muss für die Dateien/Ordner innerhalb von /usr/local erfolgen, aber nicht für dieses Verzeichnis an sich, zsudo chown -R `whoami` /usr/local/*
haha.. sehr elegant.
@HenriqueGontijo guter Punkt. Fest.

Ich war gestern mit macOS 10.13.4 mit diesem Problem konfrontiert und habe versucht, sudo chgrp -R admin /usr/localoder sudo chown -R <your-username>:<your-group-name> /usr/localdie Operation not permittedFehlermeldung zu erhalten, obwohl ich sie verwendet habesudo

Also habe ich versucht, nur chgrpfür Homebrewverwandte Ordner zu admin(Mein Benutzer ist in der adminGruppe, abhängig von dem Benutzer, den Sie ausführen, müssen Sie möglicherweise zu einer anderen Gruppe wechseln) und der adminGruppe mit diesen Befehlen Schreibzugriff auf diese Ordner zu gewähren

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Nachdem ich diese Befehle ausgeführt habe, kann ich problemlos ein neues Paket installieren. Wenn Sie erneut auf ein Berechtigungsproblem stoßen, versuchen Sie, die ersten beiden Befehle auszuführen, indem Sie den Ordnernamen durch den Namen ersetzen, bei dem Sie auf ein Berechtigungsproblem stoßen.

Ich hoffe, dies wird den anderen Benutzern mit macOS 10.13 helfen.

Hinweis: Auch wenn das Ändern des Eigentümers für /usr/localoder das Ändern der Gruppe von /usr/localund das Gewähren des Zugriffs für Ihre Gruppe funktionieren könnte, sollten Sie dies NIEMALS tun, da Sie auch den anderen nicht verwandten Ordner ändern. Das Ändern der benötigten Ordner ist viel sicherer.

Die Antwort von Reza in dieser Frage hat für mich funktioniert:

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

Sie können die Berechtigung für /usr/local selbst nicht ändern, aber Sie können die rechte Berechtigung für darunter liegende Ordner ändern

Um die Berechtigungsprobleme in den Verzeichnissen zu lösen, können wir den folgenden Befehl ausführen:

brew prune
brew prunewurde durch ersetzt und wird nun als Teil von ausgeführtbrew cleanup

Es hat für mich funktioniert.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local