Installation in Homebrew-Fehlern


112

Versuch, rvm und ruby ​​zu installieren 1.9.2

Ich habe Homebrew und Git bereits installiert, konnte jedoch keine vollständigen Updates erhalten, da ich immer wieder Berechtigungsfehler erhielt. Snow Leopard neu installiert und Berechtigungen repariert.

Nun passiert das ...

$ Brew install wget

Fehler: Kann nicht in / usr / local / Cellar schreiben


stackoverflow.com/questions/4804169/… sollte als akzeptierte Antwort markiert werden - ich befürchte, dass Besucher, die nicht sehen, dass diese Frage nicht beantwortet wurde, weiterziehen werden
dmo

Antworten:


274

sudo chown -R $USER /usr/local

Sie müssen sich selbst das Eigentum geben /usr/local/, diese Leitung genau dort zu verwenden. Ich musste dies selbst tun, nachdem ich den Ruby One-Liner oben in den offiziellen Dokumenten verwendet hatte, um Homebrew zu installieren. Arbeitete wie ein Zauber für mich. Es sollte das einzige Mal sein, dass Sie jemals sudomit Homebrew brauchen .

Ich bin mir nicht sicher, ob der Rubin-Einzeiler dies tut. Wenn ja, dann hat /usr/localseitdem etwas anderes auf meinem System die Kontrolle übernommen .

Bearbeiten : Ich habe dies komplett verpasst, aber @samvermette nicht (siehe Antworten auf meine Antwort): Wenn Sie diesen Befehl oben ausführen und etwas über Homebrew installiert haben, das spezielle Benutzerberechtigungen erfordert mysql, stellen Sie sicher, dass Sie diese Berechtigungen zurückgeben (as Mit dem obigen Befehl erhalten Sie rekursiven Besitz für alles, was sich /usr/localin Ihnen befindet ( $USER). Im Fall von MySQL ist es…

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


16
Bitte beachten Sie : Mit diesem Befehl wird dem mysqlBenutzer das Eigentum an / usr / local / mysql / data entzogen . In meinem Fall verhinderte dies, dass MySQL gestartet wurde. sudo chown -RL mysql:mysql /usr/local/mysql/data
Beheben Sie

24
Ich habe das MySQL-Problem vermieden, indem ich verwendet habe, sudo chown -R $USER /usr/local/Cellarda ich /usr/local/bereits die richtigen Berechtigungen für mich hatte
Parker

1
Leider kommen Benutzer und Benutzer gehen ... vielleicht kommt Ibrahim eines Tages zurück und markiert es. Vielleicht. (Wahrscheinlich nicht.)
Ben Kreeger

4
Ich mag diese Antwort nicht. Es wird davon ausgegangen, dass nur ein Benutzer jemals das System verwendet und dass dieser Benutzer alles / usr / local besitzen sollte, obwohl es sich nur um Homebrew handelt. Funktioniert das Brauen nicht mit Mehrbenutzersystemen? Es ist eine schlampige Antwort, auch wenn es funktioniert. Darüber hinaus wird nicht erklärt, wie ein Benutzer auf diese Situation gestoßen sein könnte. Tipp - Ich habe HomeBrew mithilfe der kanonischen Anweisungen installiert und dann von einem TimeMachine-Backup (auf einem anderen Computer) wiederhergestellt. Ich vermute, dass diese Wiederherstellung den Dateieigentum verändert hat.
Jason R. Coombs

1
Ich stimme @ JasonR.Coombs zu; Menschen sollten diese schlampige Lösung nicht verwenden, ohne die praktischen und sicherheitstechnischen Auswirkungen zu verstehen. Jede Software in / usr / local kann jetzt von allem überschrieben werden, was unter Ihrem Benutzer ausgeführt wird, wodurch eine Sicherheitslücke entsteht. Es ist durchaus möglich, dass Sie (zusätzlich zu MySQL) etwas anderes vermasseln, indem Sie blind den ersten Befehl chown ausführen. Danach ist es zu spät, alles zu identifizieren und zu reparieren, was Sie gerade vermasselt haben.
Rob

41

Ich hatte dieses Problem nach dem Upgrade auf Mavericks und diese Seite war das beste Suchergebnis beim Googeln der Fehlermeldung. Ich suchte weiter und fand diese Antwort auf stack overflow.com . Kurz gesagt, es ist:

sudo chmod a+w /usr/local/Cellar

Dies hat das Problem für mich behoben und da es nur die Berechtigungen für den spezifischen Pfad ändert, auf den in der Fehlermeldung verwiesen wird, schien es unwahrscheinlich, dass bei anderen Installationen negative Nebenwirkungen auftreten.

Ich stelle diese Antwort hier für alle anderen, die diese Seite möglicherweise zuerst finden, wie ich es getan habe. Der Kredit sollte jedoch an jdi gehen .


2
Wird dies als unsicher angesehen, da jetzt jeder an / usr / local / Cellar schreiben kann?
David Welch

Diese Antwort schlägt für Pakete fehl, die Zugriff auf andere Ordner benötigen (z. B. /usr/local/bin).
Jason R. Coombs

11

Sie können nur Admin-Benutzern erlauben, in /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Seitdem kann jeder Benutzer, der zur Admin-Gruppe gehört, neue Abhängigkeiten installieren.


Sieht nach einer besseren Lösung für Computer mit mehreren Administratoren aus (obwohl mein Verzeichnis / usr / local / lib auch g + x benötigte, damit aspell funktioniert).
James Snook

1
Um zu vermeiden, dass der Fehler "Der" Brew Link " -Schritt wurde nicht erfolgreich abgeschlossen" angezeigt wird , können Sie auch den Inhalt dieses Threads anwenden , nämlich sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDwobei DDDD bin , share , Library / LinkedKegs , opt
superk

1
Danke für die Antwort, ich musste "sudo" verwenden. Wenn dieser Befehl nicht funktioniert, versuchen Sie, ihm sudo
MQoder



1

Ich schlage vor, sicherzustellen, dass der aktuelle Benutzer Mitglied der Gruppe ist, die / usr / local besitzt. Ich glaube standardmäßig, dass diese Gruppe ist wheel. Um sich selbst zu einem Mitglied dieser Gruppe zu machen:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Obwohl es sich um einen uneleganten Hammer handelt, hat es den beabsichtigten Effekt: Es ermöglicht den Zugriff auf Elemente /usr/local, die nur zur Verwendung (Lesen / Schreiben) durch erhöhte Mitglieder bestimmt sind. Dieser Ansatz hat die Vorteile des anderen oben genannten Ansatzes, da er die Gruppenmitgliedschaften nutzt und es mehreren (autorisierten) Benutzern im System ermöglicht, Homebrew zu verwenden.


0

Wie haben Sie Homebrew installiert? Zu ihren offiziellen Installationsanweisungen gehört das Ausführen eines Ruby-Skripts. Das sollte sich um die Berechtigungsprobleme für Sie kümmern.

Wenn Sie kein Skript ausführen möchten, gibt es auf dieser Seite einen Abschnitt mit dem Namen "Installation in / usr / local für Entwickler", in dem die Änderung der Berechtigungen erläutert wird, die für das Verzeichnis / usr / local erforderlich sind.


Ich habe ein Skript verwendet und es installiert, aber es hatte immer noch Probleme beim Aktualisieren. Ich habe Benutzerdaten auf einen neuen Laptop migriert. Musste ein paar Workarounds von Github B / C machen, das Skript funktionierte zunächst nicht.
Ibrahim

-3

EDIT : Wie in den Kommentaren erwähnt, ist es eine schlechte Idee, Sudo mit Homebrew zu verwenden, also verwenden Sie nicht die folgende Antwort!


Sie können diesen Fehler auch verhindern, wenn Sie den Befehl mit sudo ausführen:

$ sudo brew install wget

Aber seien Sie vorsichtig bei der Verwendung, sudoda Sie viele Fehler machen können.


Dieser Ansatz schlägt bei späten Versionen von Homebrew fehl, die den Aufruf als root (via sudo) nicht zulassen.
Jason R. Coombs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.