Der Brauarzt sagt: "Warnung: / usr / local / include ist nicht beschreibbar."

352

Brauarzt sagt:

Warnung: / usr / local / include ist nicht beschreibbar. Dies kann passieren, wenn Sie "sudo make install" -Software verwenden, die nicht von Homebrew verwaltet wird.

Wenn ein Brew versucht, eine Header-Datei in dieses Verzeichnis zu schreiben, schlägt die Installation während des Verknüpfungsschritts fehl.

Sie sollten wahrscheinlich chown/ usr / local / include

Ich habe verschiedene Befehle ausprobiert, um dies zu lösen, aber ich stecke immer noch hier fest.

Ich laufe Homebrew am 10.8.2

Gaggina
quelle
1
Ich habe einen ähnlichen Fehler für "/ usr / local / lib" in Homebrew 0.9.4 erhalten, der auch mit der folgenden Lösung behoben wurde.
JeremiahLee

Antworten:

680

Übernehmen Sie das Eigentum daran und alles darin.

Mac OS High Sierra oder neuer: (siehe Kirk in den Kommentaren unten)

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

Frühere Versionen von Macos:

$ sudo chown -R $USER:admin /usr/local/include

Dann mach noch einen

$ brew doctor
jrwren
quelle
13
Operation unzulässig?
Topwik
68
Irgendein Vorteil statt $ sudo chown -R `whoami` /usr/local/?
Labu
2
@ WillemLabu eine Prozessgabel weniger? whoami ist eine effektive Benutzer-ID und wie die Manpage sagt, veraltet :) bash ist die Standard-Shell unter OSX und irgendwo wird USER eingestellt.
Jrwren
7
Ich frage mich, ob der Wechsel des Besitzers von / usr / local zu einem Benutzer eine saubere Lösung ist. Wäre es nicht besser, $ USER zur 'Wheel'-Gruppe hinzuzufügen? Oder ändern Sie die Gruppe von / usr / local in die Administratorgruppe?
Michael Lehn
13
Laut Homebrew unter Mac OS /usr/localfunktioniert High Sierra Chown nicht mehr. Verwenden Sie stattdessensudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett
115

Was für mich funktioniert hat, war auch

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local
Durul Dalkanat
quelle
20
Dies ist die einzige vernünftige Lösung, die nicht wirklich vernünftig ist, um / usr / local in einem Mehrbenutzer-
Betriebssystem
3
Müssen diesem Kerl ein paar Stimmen geben! ;) Das hat super geklappt.
jrista
1
Dies ist die bessere Lösung IMHO
Jacurtis
5
Nun, nicht in High Sierra. "Dateimodus in / usr / local kann nicht
geändert werden
1
@ user980018 Ich bin gerade auf dasselbe gestoßen - hier ist die Problemumgehung, die ich verwendet habe
Casey Davidson
38

Was für mich funktioniert hat war

$ sudo chown -R yourname:admin /usr/local/bin
Ana Isabel
quelle
37

Das einzige, was bei El Capitan für mich funktioniert hat, war:

sudo chown -R $(whoami) /usr/local
Heiser
quelle
5
chown: / usr / local: Betrieb nicht erlaubt
AlxVallejo
1
@AlxVallejo es auf / usr / local / bin zu tun hat für mich gearbeitet
marcotama
23

Wenn Sie sich in High Sierra befinden und dieses Problem auftritt , führen Sie die folgenden Schritte aus ( Hinweis: / usr / local kann in High Sierra nicht angezeigt werden ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Versuchen Sie dann, mit Brew Link zu verknüpfen. Ich hatte ein ähnliches Problem und keine der oben genannten Lösungen funktionierte für High Sierra. Hoffe das hilft jemandem.

Profi
quelle
21

Für High Sierra:

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

Probieren Sie dann Ihre Brühbefehle aus.

Ausgabe Nr. 3285

Mahi
quelle
2
Sie sind sich nicht sicher, warum dies abgelehnt wurde, wenn Sie zuvor Brew installiert und auf High Sierra aktualisiert haben. Durch die Neuinstallation von Homebrew wird das Problem behoben. Dies ist der einfachste Ansatz
sam9046
Ironischerweise liegt das daran, dass das Skript genau das tut, was die anderen Antworten vorschlagen.
Leichtigkeitsrennen im Orbit
Dies funktionierte für mich, aber zuerst deinstallierte ich die vorherige mit: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas
12

Sie können den Befehl alias, um dieses Problem in Ihrem zu beheben, .bash_profileund ihn jedes Mal ausführen, wenn Sie darauf stoßen:

Fügen Sie am Ende der Datei ~/.bash_profileFolgendes hinzu:

alias fix_brew='sudo chown -R $USER /usr/local/'

Und jetzt können Sie in Ihrem Terminal Folgendes ausführen:

$ fix_brew
Karlingen
quelle
12

Dies funktionierte bei mir unter macOS 10.12

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

Ich hatte das Problem beim Aktualisieren von Homebrew mit folgendem Fehler:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local
Max
quelle
8

Für einige wird es sein:

sudo chown -R JonJames:admin /usr/local/lib

wobei "lib" im Gegensatz zu "bin" oder "include" oder "was auch immer" verwendet wird

Die Homebrew- Warnung "sollte" erklären, was speziell nicht beschreibbar ist, und Ihnen dann eine Befehlssyntax zum Folgen geben. Sie müssen jedoch das ":" verwenden, im Gegensatz zu dem, was in der Warnung erwähnt wird, was eigentlich keine korrekte Syntax ist.

Jonathan James
quelle
Die Syntax in der Warnung ist ein bisschen verwirrend. Ich glaube, ich habe den Hauptmitarbeiter von Homebrew per E-Mail gefragt, ob sie etwas daran ändern würden, und auf die Antwort gewartet. Vielleicht wird sich die Sprache der Warnung in zukünftigen Brau-Updates ändern.
Jonathan James
Vielen Dank! Dies funktionierte nach einigem Suchen.
Thiswayup
7

Arbeite für mich

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

$ cd /usr/local/Library && git stash && git clean -d -f
Alexander Salas Bastidas
quelle
5

Gleicher Fehler unter MacOS 10.13

/usr/local/includeund /usr/local/ /usr/libwurden nicht erstellt. Ich habe manuell erstellt und brew linkschließlich gearbeitet.

Miguel
quelle
3

Sie müssen / usr / local / include und / usr / local / lib erstellen, wenn sie nicht vorhanden sind:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include
Waldencoder
quelle
3

Was für mich funktioniert hat, obwohl ich mehr als einen Benutzer auf meinem Computer habe.

Terminal verwenden:

  • Laufen brew doctor
    • Mehrere zu sehen /usr/local/...ist kein beschreibbarer Fehler
  • Deaktivieren des Systemintegritätsschutzes von Mac: https://apple.stackexchange.com/a/208481/55628
  • Führen Sie Folgendes aus
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Ausführen von Macbook Pro OSX High Sierra (Version 10.13.3.)

EDIT 1:

Zu Ihrer Information - Bitte beachten Sie, dass dies ein Problem beim Ausführen von MySQL auf Ihrem MAC verursacht.

Um meinen lokalen Server starten zu können, musste ich Folgendes ausführen:

sudo chown -R mysql:mysql /usr/local/mysql/data

Nachdem Sie dies ausgeführt haben, können Sie Ihren lokalen MySQL Server starten.

JayRizzo
quelle
1
Ausgezeichnet! Vielen Dank!
Shmuli
3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Dadurch werden alle erforderlichen Verzeichnisse erstellt und der richtige Besitz erhalten.

Nach dem Ausführen dieser Befehle überprüfen Sie mit: brew doctor

Dies funktioniert für Mojave.

Sven
quelle
2

Sie müssen die Kontrolle über das Ganze bekommen, /usr/localum dies zu tun, müssen Sie eine rekursive chownunter machen/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/

Add-Semikolons
quelle
2

Ich möchte nur den bescheidenen Kommentar von sam9046 als alternative und möglicherweise viel einfachere Lösung wiederholen , die in meinem Fall funktioniert hat: Deinstallieren und installieren wiederholen Homebrew erneut von Grund auf neu. Keine Sudo-Befehle erforderlich.

Sie können das Deinstallationsskript auch über diesen Link oben durchsuchen / ändern, wenn Sie sicherstellen möchten, dass es Ihre zuvor installierten Pakete nicht beeinträchtigt. In meinem Fall war dies nur meine Heimmaschine, also habe ich gerade von vorne angefangen.

Adamkski
quelle
2

Zuerst müssen Sie das Verzeichnis erstellen:

sudo mkdir /usr/local/include

Zweite:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
quelle
1

Ich habe dies in meiner Organisation erlebt, nachdem alle unsere Benutzer an Active Directory gebunden waren (wodurch die UID effektiv von 50x auf ###### geändert wurde).

Jetzt geht es einfach darum, den Besitz aller Dateien, die x gehörten, in y zu ändern.

Wobei 501 meine alte numerische Benutzer-ID ist, die immer noch allen Homebrew-Dateien zugeordnet ist.

Die alte Benutzer-ID kann mit gefunden werden ll /usr/local/Cellar

Aktualisieren Sie nun den Besitz sudo find /usr/local -user 501 -exec chown -h $USER {} \;

Auf diese Weise vermeiden wir, den Besitz von Dateien zu ändern, die nicht von Homebrew kontrolliert werden oder einem anderen Systembenutzer gehören.

Tarun
quelle
1

Gehen Sie in das Verzeichnis / bin und geben Sie Folgendes ein:

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

Yusuf
quelle