Homebrew: Symlink konnte nicht hergestellt werden, / usr / local / bin ist nicht beschreibbar [geschlossen]

361

Während der Installation tig, HomeBrewwird die Anzeige der folgenden Probleme während einer Abhängigkeit der Installation:

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
Jikku Jose
quelle
3
Dies gehört nicht zu stackowerflow.com, sondern zu superuser.com oder askdifferent.com
Ondra Žižka

Antworten:

582

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 von homebrewOrdnern.

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

Bei einigen Paketen müssen Sie dies möglicherweise auch tun für /usr/local/shareoder /usr/local/opt:

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt
Jikku Jose
quelle
25
Gibt es keine Probleme für das System oder andere Benutzer, wenn Sie alle / usr / local / bin auf die aktuelle Verwendung zurücksetzen?
Don Giulio
10
Wäre sudo chown -R whoami :admin /usr/local/binnicht gleichbedeutend mit dem Befehl in der Antwort, ohne dass Sie ihn durch yourusenameIhren tatsächlichen Benutzernamen ersetzen müssten?
Jason Swett
5
Ich musste auch usr/local/optrekursiv chown . Danach hat es funktioniert.
atripes
5
Auf meinem Mac (10.9.5) /usr/local/binscheinen die Berechtigungen von (und Freunden) auf drwxr-xr-x+und root wheeljeden Tag zurückzugreifen. Ich muss die Dauerwellen jedes Mal neu konfigurieren, wenn ich möchte brew install. Ich gehe davon aus, dass das Betriebssystem die Dauerwellen zurücksetzt, um mich zu schützen. Wie kann ich dafür sorgen, dass es aufhört? (Ich habe es versucht, chflags uchg …aber das verhindert die Installation von
Brew
1
Ich habe mein Konto zur Gruppe "Rad" hinzugefügt. Dies ermöglicht mir "sudo chmod -R g + w / usr / local" - dies ermöglicht es den Mitgliedern der Gruppe "Rad", in die Ordner zu schreiben. Scheint sicherer zu sein, als den Besitzer dieser vertraulichen Ordner in ein weniger sicheres Konto als root zu ändern.
Michael Krebs
220

Anstatt einen bestimmten Befehl auszuführen, würde ich empfehlen brew doctor, alle Warnungen auszuführen und ernst zu nehmen. Es kann andere Probleme geben, bei denen Sie stecken bleiben und die in dieser Frage möglicherweise nicht erfasst werden.

Wenn das Gebräu mit der Zeit aktualisiert wird, können bestimmte Befehle gültig bleiben oder auch nicht. brew doctorDies stellt jedoch sicher, dass Sie über die aktuelle Fehlerbehebung verfügen.

zakishaheen
quelle
9
Ich kann nicht glauben, dass Ihre Antwort weniger beliebt ist. Es ist sicherlich vorsichtiger als die oben geäußerten Vermutungen.
Robert von Fairfax
34
brew doctorDas Problem wird nicht behoben, es wird Ihnen nur darüber berichten, und wenn Sie den Rat des Arztes befolgen, sagt Brew, dass es das nicht kann. Das ist keine Lösung
Keith Tyler
8
Vielleicht hat es jemand verbessert. Jetzt schlägt Brew Doctor vor, dass ich ein ähnliches Cmd wie die beliebteste Antwort verwende, und danach funktioniert der Brew Symlink. Ich bin auf einem Mac, also werden wir sehen, wie lange es dauert. :-)
Joshua Richardson
2
Das war sehr nützlich, danke. Einige andere spezielle Verzeichnisse wurden behoben, um den oben genannten Vorschlag zu übersehen.
SwimBikeRun
6
Braudoktor lieferte das GENAUE Problem und lieferte auch die manuelle Lösung!
Netrox
74

Die anderen Antworten sind zwar richtig, aber sie beantworten nicht, warum dieses Problem auftreten könnte und wie diese Grundursache behoben werden kann.

Ursache

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

  1. Die Homebrew-Installation wurde mit einem anderen Benutzer als dem derzeit verwendeten durchgeführt. Homebrew erwartet, dass nur der Benutzer, der es ursprünglich installiert hat, es jemals verwenden möchte.
  2. Sie haben eine Software installiert, die ohne Brew in / usr / local schreibt. Dies ist die Ursache brew doctor, die vorgeschlagen wird, 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 ständig den Besitz der Homebrew-Dateistruktur ändern. und das ist keine gute idee.

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

  1. Erstellen Sie eine Gruppe mit dem Namen "Brauen":

    1. Öffnen Sie die Systemeinstellungen
    2. Klicken Sie auf Konten
    3. Klicken Sie auf das "+" (ggf. zuerst entsperren)
    4. Wählen Sie unter Neues Konto die Option Gruppe
    5. Gebräu eingeben
    6. Klicken Sie auf Gruppe erstellen
  2. Wählen Sie die Brühgruppe aus und fügen Sie die Benutzerkonten hinzu, die Sie brauen möchten.
  3. Ändern Sie den Besitz der Ordnergruppe / usr / local: sudo chgrp -R brew /usr/local
  4. Ändern Sie die Berechtigungen zum Hinzufügen von Schreiben zu / usr / local als Gruppe: sudo chmod -R g+w /usr/local
  5. Ändern Sie die Homebrew-Cache-Verzeichnisgruppe: sudo chgrp -R brew /Library/Caches/Homebrew
  6. Ändern Sie die Berechtigungen für das Homebrew-Cache-Verzeichnis: sudo chmod -R g+w /Library/Caches/Homebrew

Einzelbenutzer-Homebrew

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

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

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

Nachprüfung

Nach diesen Schritten brew doctorsollte jeder Benutzer in der Braugruppe über den Erfolg berichten , vorausgesetzt, Sie haben sich abgemeldet und wieder angemeldet, um die neuen Gruppenmitgliedschaften anzuwenden (wenn Sie die Mehrbenutzerroute gewählt haben). Wenn Sie nur die Korrekturen für Homebrew für Einzelbenutzer korrigiert haben, sollte das Abmelden und erneute Anmelden nicht erforderlich sein, da sich keine Ihrer Gruppenmitgliedschaften geändert hat.

Steinbrecher
quelle
2
Vielen Dank! Ich sollte wahrscheinlich mehr über Unix-Benutzergruppen lesen. Ich bin völlig ahnungslos darüber, wie es funktioniert, die Argumentation gut genug zu verdauen. Aber es klingt sehr vernünftig, danke für den Zeiger!
Jikku Jose
1
Unix-Gruppen sind einfacher als Sie vielleicht annehmen - jede Datei verfügt über Lese-, Schreib- und Ausführungsberechtigungen, die für den 'Benutzer' und die 'Gruppe', denen diese Datei gehört, sowie für 'andere' verfügbar sind. Wenn Sie die Gruppe festlegen, die eine Datei oder einen Ordner besitzt, und 'Gruppe' für diesen Ordner Schreibberechtigungen hinzufügen, kann jeder Benutzer in dieser Gruppe in den Ordner schreiben. Es gibt wirklich nicht mehr als das. nicht annähernd so komplex wie Berechtigungen in Windows.
Steinbrecher
1
Es ist also eine einfache Möglichkeit, das Berechtigungssystem einer Reihe von Dateien einer Gruppe zuzuordnen, sodass mehrere Benutzer problemlos hinzugefügt werden können, um alle diese Berechtigungen auf einmal anzuwenden.
Jikku Jose
2
Dies hat meine Probleme mit dem Brew Link behoben, danke.
Keith Tyler
Ich finde es immer noch ein bisschen gefährlich, ein sensibles Verzeichnis zu haben, wie z. B. /usr/local/bingruppenbeschreibbar, insb. in einer Mehrbenutzerumgebung. Ist das wirklich der "offizielle" Brauweg?
Corwin.amber
67

Für diejenigen, die suchen, /usr/local/sbinist kein beschreibbarer Fehler:

UPDATE: Es könnte /usr/local/someOtherFolderNamezB sein /usr/local/include. Sie müssen diesen Ordner nur erstellen mit:

  • sudo mkdir someOtherFolderName

Erstellen Sie zuerst den sbinOrdner. Beachten Sie, dass hierfür sudoBerechtigungen erforderlich sind

  • cd /usr/local

  • sudo mkdir sbin

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

  • brew link yourPackageName

Gokcand
quelle
6
Dies funktionierte für mich
Robin
Ich musste auch das Verzeichnis zu meinem ~ / .bash_profile hinzufügen:PATH=$PATH:/usr/local/sbin
Julien
Nach stundenlangem Suchen ist dies das einzige, was für mich funktioniert hat. Ich bin in der High Sierra.
ItsJoeTurner
34

Ich fand für mein spezielles Setup die folgenden Befehle funktionierend

brew doctor

Und dann zeigte mir das, wo meine Fehler waren, und dann dieser etwas andere Befehl als der obige Kommentar.

sudo chown -R $(whoami) /usr/local/opt
kinnth
quelle
2
Vielen Dank für den offensichtlichen Vorschlag. Ich neige dazu zu vergessenbrew doctor
Antony
1
Dies löste das Problem hier
Khaosdoctor
brew doctorist gut.
AechoLiu
arbeitete wie ein Zauber, danke
Hexley
15

Ich habe das gleiche 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 Verbindungsproblem haben, mysqlschreiben Sie einfach

brew link mysql

Das wird funktionieren.

Harry_pb
quelle
1
arbeitete für mich für rabbitmq
Omar
Was ist der Zweck von 'Schritt 1'?
Conrad C
1
Doktor brauen Daumen hoch! Ich habe keine Pflaume gebraut, aber andere fehlende Pakete installiert und es hat für Mongodb funktioniert.
Chenlu
Das Aufrufen von "Brew Prune" ist deaktiviert. Verwenden Sie stattdessen "Aufräumen".
HanumanDev
12

Für diejenigen, die auf dieses Problem stoßen (gewährt 4 Jahre nach Erstellung dieses Beitrags), während sie Mac OS High Sierra ausführen - die hier beschriebenen Schritte haben das Problem für mich gelöst. Im Wesentlichen wird nur die Deinstallation und Neuinstallation von Brew beschrieben.

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

Nachdem Sie diese Schritte ausgeführt haben, haben Sie brew link wie ein Zauber gearbeitet!

Eron Salling
quelle
Ich fand, dass dies für mich funktionierte (ohne den anfänglichen Dump-Befehl): github.com/Homebrew/brew/issues/3285#issuecomment-334976806
vr_driver
Vielen Dank! Versuchte die Top-Antwort von Harry, kein Glück - versuchte es und es funktionierte wie ein Zauber!
Joe
Arbeitete für mich, danke!
Zen
9

Für mich war die Lösung zu laufen brew update.

Also, mach das zuerst.

Dies mag für Leute, die mit Homebrew vertraut sind, normal sein, aber ich bin keiner dieser Leute.

Bearbeiten: Ich habe festgestellt, dass ich ein Update durchführen muss, indem ich brew doctorwie in der Antwort von @ kinnth auf dieselbe Frage vorgeschlagen ausgeführt habe.

Ein allgemeiner Workflow zur Fehlerbehebung könnte folgendermaßen aussehen: 1. Führen Sie brew update 2. aus, wenn dies nicht zur Ausführung beiträgt, brew doctorund befolgen Sie die Anweisungen. 3. Wenn dies nicht zur Überprüfung des Stapelüberlaufs beiträgt

FragmentalStew
quelle
1
Dies hat alles für mich repariert und ist es wert, vor allem anderen getan zu werden.
Rob Evans
Alles, was der Braudoktor tut, ist darauf hinzuweisen, dass ich keine Fässer in meinem Keller habe ... damit das OP-Problem nicht
behoben werden kann
@AlxVallejo Dies ist, was ich getan habe, um ein Problem zu lösen, das ich hatte, als ich einen fast identischen Fehler wie OP erhielt. Die Nachricht, die Sie von Brew Doctor erhalten haben, klingt für mich nach einem anderen Problem. Der Workflow von "1. Brew Update ausführen 2. Wenn dies nicht dazu beiträgt, Brew Doctor auszuführen und seinen Anweisungen zu folgen 3. Wenn dies nicht dazu beiträgt, den Stapelüberlauf zu überprüfen" gilt wahrscheinlich weiterhin.
FragmentalStew
6

Während des Brew Link Node habe ich außerdem die folgenden Probleme bekommen:

Fehler: Der Symlink include / node / usr / local / include konnte nicht beschrieben werden.

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

Um das oben genannte Problem zu lösen, gehen Sie einfach 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 Node erneut aus

Wasantha Wijayaratna
quelle
5

Dies liegt daran, dass der aktuelle Benutzer nicht in diesen Pfad schreiben darf . Um die R / W-Berechtigungen (Lesen / Schreiben) zu ändern, können Sie entweder das 1. Terminal oder das 2. grafische Fenster "Get Info" verwenden.

1. Terminal verwenden

Google verwendet die Befehle chmod / chown (Modus ändern / Besitzer ändern) vom Terminal

2. Verwenden Sie die grafische 'Get Info'

Sie können mit der rechten Maustaste auf den Ordner / die Datei klicken, für die Sie die Berechtigungen ändern möchten, und dann Informationen abrufen öffnen. Daraufhin wird ein Fenster wie das folgende angezeigt, in dem Sie die R / W-Berechtigungen einfach ändern können: Geben Sie hier die Bildbeschreibung ein

Denken Sie daran, die Berechtigung nach Ihrer vorübergehenden Arbeit nach Möglichkeit wieder auf "schreibgeschützt" zu ändern

Hasaan Ali
quelle
Verwenden Sie Brew Doctor - es identifiziert die (System-) Ordner, die repariert werden müssen, korrekt.
Johndpope
2

Mein Problem war

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

chownhat nicht geholfen, aber ich habe die laufenden brew doctorRatschläge befolgt und diese Warnung hat mir geholfen:

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

Nach brew pruneallem hat gut funktioniert!

Pavel Druzhinin
quelle
Großartig. Funktioniert bei mir.
Bagusflyer
1

Für diejenigen, die nicht vertraut sind:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE
Justin
quelle
0

Wenn Sie im Finder zu dem Ordner gehen, klicken Sie mit der rechten Maustaste und wählen Sie "Informationen abrufen". Sie können zum Abschnitt "Freigabe und Berechtigungen" für den Ordner gehen und "Lesen & Schreiben" für "Alle" zulassen.

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

Carl Lippert
quelle
0

Wenn Sie bereits ein Verzeichnis /usr/localfü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 es dann deinstalliert. Von /usr/local/<my_package>/dieser vorherigen Installation war noch ein Verzeichnis übrig. Ich habe diesen Ordner ( sudo rm -rf /usr/local/<my_package>/) gelöscht und danach war der Brew Link-Schritt erfolgreich.

Samuel Peter
quelle