it-swarm.com.de

Homebrew: Konnte nicht symlink,/usr/local/bin ist nicht beschreibbar

Während der Installation von tig zeigt HomeBrew während der Installation einer Abhängigkeit die folgenden Probleme an:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc
297
Jikku Jose

Nach Alex 'Antwort konnte ich dieses Problem lösen; Dies scheint ein Problem zu sein, das nicht spezifisch für die zu installierenden Pakete ist, sondern für die Berechtigungen der homebrew-Ordner.

Sudo chown -R `whoami`:admin /usr/local/bin

Bei einigen Paketen müssen Sie möglicherweise auch /usr/local/share oder /usr/local/opt ausführen:

Sudo chown -R `whoami`:admin /usr/local/share
Sudo chown -R `whoami`:admin /usr/local/opt
515
Jikku Jose

Anstatt einen bestimmten Befehl auszuführen, würde ich empfehlen, brew doctor auszuführen und alle Warnungen ernst zu nehmen. Möglicherweise gibt es noch andere Probleme, die bei dieser Frage möglicherweise nicht erfasst werden. 

Wenn Brew mit der Zeit aktualisiert wird, können bestimmte Befehle auch weiterhin gültig bleiben. brew doctor stellt jedoch sicher, dass Sie aktuelle Informationen zur Fehlerbehebung erhalten. 

152
zakishaheen

Die anderen Antworten sind richtig, aber sie antworten nicht warum Dieses Problem kann auftreten und wie man diese Grundursache behebt.

Ursache

Es gibt zwei mögliche Ursachen für dieses Problem:

  1. Die Homebrew-Installation wurde mit einem anderen Benutzer als dem, den Sie gerade verwenden, durchgeführt. Homebrew geht davon aus, dass nur der Benutzer, der es ursprünglich installiert hat, es jemals verwenden möchte.
  2. Sie haben eine Software installiert, die ohne Verwendung von brew in/usr/local schreibt. Dies ist die Ursache, die brew doctor Vorschlägt, wenn Sie es ausführen.

Lösung

Multiuser Homebrew

Wenn Sie über mehrere Benutzerkonten verfügen und möchten, dass mehr als eines von ihnen Brew verwenden kann, müssen Sie einige Schritte ausführen. Andernfalls müssen Sie bei jedem Benutzerwechsel den Eigentümer der Homebrew-Dateistruktur ständig ändern. und das ist keine gute idee.

Detaillierte Anweisungen finden Sie online , aber die schnelle Antwort lautet:

  1. Erstelle eine Gruppe benanntes Gebräu:

    1. Öffnen Sie Systemeinstellungen
    2. Klicken Sie auf Accounts
    3. Klicken Sie auf das "+" (bei Bedarf zuerst entsperren)
    4. Unter Neues Konto wählen Sie Gruppe
    5. geben Sie Brauen ein
    6. Klicken Sie auf Gruppe erstellen
  2. Wählen Sie die Gruppe brew und fügen Sie die Benutzerkonten hinzu, die Sie mit brew verwenden möchten.
  3. ändere den/usr/local Ordner Gruppenbesitz: Sudo chgrp -R brew /usr/local
  4. ändern Sie die Berechtigungen, um Schreibzugriff auf/usr/local als Gruppe hinzuzufügen: Sudo chmod -R g+w /usr/local
  5. homebrew-Cache-Verzeichnisgruppe ändern: Sudo chgrp -R brew /Library/Caches/Homebrew
  6. ändere die Homebrew Cache Verzeichnis Berechtigungen: Sudo chmod -R g+w /Library/Caches/Homebrew

Single User Homebrew

Wenn Sie nicht versuchen, mehr als einen Benutzer mit Homebrew zu verwenden, ist die Lösung der anderen Antworten auf der Grundlage der Vorschläge von brew doctor Wahrscheinlich ausreichend:

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

Sudo chown -R $(whoami) /Library/Caches/Homebrew

Nachprüfung

Nach diesen Schritten sollte brew doctor Den Erfolg aller Benutzer in der Gruppe brew melden, vorausgesetzt, Sie haben sich abgemeldet und sind wieder angemeldet, um die neuen Gruppenmitgliedschaften zu übernehmen (falls Sie die Gruppe betreten haben) Mehrbenutzer-Route). Wenn Sie gerade Änderungen an Homebrew für Einzelbenutzer vorgenommen haben, sollte es nicht erforderlich sein, sich abzumelden und wieder anzumelden, da sich keine Ihrer Gruppenmitgliedschaften geändert hat.

72
stonecrusher

Für diejenigen, die nach /usr/local/sbin Suchen, ist kein beschreibbarer Fehler:

PDATE: Es könnte /usr/local/someOtherFolderName Sein, beispielsweise /usr/local/include. Sie müssen nur diesen Ordner erstellen mit:

  • Sudo mkdir someOtherFolderName

Erstellen Sie zuerst den Ordner sbin. Beachten Sie, dass hierfür die Berechtigungen Sudo erforderlich sind

  • cd /usr/local

  • Sudo mkdir sbin

  • Sudo chown -R $(whoami) $(brew --prefix)/*

  • brew link yourPackageName

65
gokcand

Ich habe festgestellt, dass für mein spezielles Setup die folgenden Befehle funktionierten

brew doctor

Und dann hat mir das gezeigt, wo meine Fehler waren, und dann dieser etwas andere Befehl als der Kommentar oben.

Sudo chown -R $(whoami) /usr/local/opt
28
kinnth

Für diejenigen, die in dieser Ausgabe (die 4 Jahre nach der Veröffentlichung dieses Beitrags gewährt wurde) beim Ausführen von Mac OS High Sierra auftraten, lösten die hier beschriebenen Schritte das Problem für mich. Im Wesentlichen wird lediglich die Deinstallation und Neuinstallation von brew beschrieben. 

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-habe-permission-to-write-to-usr-local-e8bd1c6a22d4

Nachdem er diese Schritte ausgeführt hatte, funktionierte brew link wie ein Zauber! 

9
Erica Salling

Ich habe dasselbe Problem gefunden, das wir in drei Schritten lösen können:

Schritt 1

Sudo chown -R $(whoami) $(brew --prefix)/*

Schritt 2

brew doctor

Schritt 3

brew Prune

Wenn Sie immer noch ein Linkproblem haben, sagen wir für mysql, schreiben Sie einfach 

brew link mysql

Das wird funktionieren. 

8
Harry_pb

Für mich bestand die Lösung darin, brew update auszuführen.

Also, tue dies zuerst.

Dies mag für Leute, die sich mit Homebrew auskennen, üblich sein, aber ich bin keiner von diesen Leuten.

Edit: Ich entdeckte, dass ich ein Update durch Ausführen von brew doctor durchführen musste, wie von @ kinnth vorgeschlagen.

Ein allgemeiner Workflow für die Fehlerbehebung könnte folgendermaßen aussehen: 1. Führen Sie brew update.__ aus. 2. Wenn dies nicht hilft, brew doctor ausführen und den Anweisungen folgen 3. Wenn dies nicht hilft, den Stapelüberlauf zu überprüfen

7
FragmentalStew

Während ich brew link node machte, bekam ich außerdem folgende Probleme:

Fehler: Symlink include/node konnte nicht verknüpft werden /Usr/local/include ist nicht beschreibbar.

Verknüpfung von /usr/local/Cellar/node/9.3.0 ... Fehler: Berechtigung verweigert @ dir_s_mkdir -/usr/local/lib

Um dies zu lösen, gehen Sie zu/usr/local/und überprüfen Sie die Verfügbarkeit der Ordner 'include' und 'lib'. Wenn diese Ordner nicht verfügbar sind, erstellen Sie sie einfach manuell.

Führen Sie den brew install-Knoten erneut aus

Dies liegt daran, dass der aktuelle Benutzer nicht in diesem Pfad write darf. Um die Rechte (Lese-/Schreibzugriff) zu ändern, können Sie entweder 1. Terminal oder 2. Grafisches Fenster "Informationen" verwenden.

1. Terminal verwenden

Google, wie man die Befehle chmod/chown (Modus ändern/Besitzer ändern) vom Terminal aus verwendet

2. Verwenden von grafischen "Informationen"

Sie können mit der rechten Maustaste auf den Ordner bzw. die Datei klicken, für die Sie die Berechtigungen ändern möchten, und dann Get Info öffnen. Daraufhin wird ein Fenster wie unten gezeigt angezeigt, in dem Sie unten rechts die Berechtigungen ändern können:  enter image description here

Vergessen Sie nicht, die Berechtigung nach der Zeitarbeit wieder in "Nur Lesen" zu ändern.

5
Hasaan Ali

Ich habe Folgendes für Sophos Anti-Virus-Benutzer gefunden:

https://stackoverflow.com/a/32981184

https://community.sophos.com/products/free-antivirus-toolss-for-desktops/f/17/t/10029

Kurz gesagt, Sophos ändert die Berechtigungen bestimmter/usr/local-Verzeichnisse. Sophos hat dieses Problem behoben und das Update ist in Version 9.4.1 enthalten.

3
joshau

Mein Problem war

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

chown hat nicht geholfen, aber ich folgte dem Ausführen von brew doctor-Ratschlägen und diese Warnung half mir:

Warning: Broken symlinks were found. Remove them with `brew Prune`:
/usr/local/share/man/man3/* 

Nach brew Prune hat alles gut funktioniert!

2
Pavel Druzhinin

Für diejenigen, die nicht vertraut sind:

Sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE
0
Justin

Wenn Sie bereits ein Verzeichnis in /usr/local für das zu installierende Paket haben, können Sie versuchen, dieses Verzeichnis zu löschen.

In meinem Fall hatte ich zuvor das Paket installiert, das ich ohne Brew installieren wollte, und hatte es dann deinstalliert. Von der vorherigen Installation war ein Verzeichnis /usr/local/<my_package>/ übrig. Ich habe diesen Ordner gelöscht (Sudo rm -rf /usr/local/<my_package>/) und danach war der Brew-Link-Schritt erfolgreich.

0
Samuel Peter

Wenn Sie den Ordner im Finder aufrufen, mit der rechten Maustaste klicken und "Informationen abrufen" auswählen, können Sie im Abschnitt "Freigabe und Berechtigungen" für den Ordner "Lesen und Schreiben" für "alle" aktivieren 

Dies ist, was ich mache, um Symlinks mit diesem Fehler passieren zu lassen. Brew scheint auch die Berechtigungen für den Ordner zurückzusetzen, als hätten Sie nichts geändert

0
Carl Lippert