Ich habe gerade von Snow Leopard auf Lion aktualisiert und versuche, Homebrew zu installieren. Nach der Installation führe ich jedoch brew doctor
die Installationsanweisungen aus und sehe eine Reihe von Fehlern, die darauf hinweisen, dass /usr/local-Verzeichnisse nicht beschreibbar sind. Zum Beispiel:
Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.
If a brew tries to write a file to this directory, the install will
fail during the link step.
You should probably `chown` /usr/local/share
Ich bekomme diese für eine Reihe von Verzeichnissen:
You should probably `chown` /usr/local/include
You should probably `chown` /usr/local/share
You should probably `chown` /usr/local/share/man
Ich kann nicht herausfinden, warum dieser Fehler auftritt, da ich anscheinend Teil der Unix-Gruppe bin, die Schreibberechtigungen für diese Verzeichnisse hat:
Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x 4 root admin 136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$
Was vermisse ich?
EDIT: Das Problem ist jetzt in Homebrew behoben:
Wenn das Problem weiterhin auftritt, aktualisieren Sie Homebrew wie folgt:
brew update
Wenn Sie wissen möchten, was das Problem war, habe ich meine ursprüngliche Antwort unten aufbewahrt.
Ich habe genau das gleiche Problem und meiner Meinung nach liegt das Problem brew doctor
eher in Ihrer und meiner Installation.
Ich denke, Sie sollten das Problem ignorieren, anstatt den Besitz von zu ändern /usr/local
. Alternativ können Sie Ihr lokales brew doctor
Skript reparieren, bis ein Fix veröffentlicht wird. Siehe unten.
Ich halte es nicht für richtig, /usr/local
einem bestimmten Benutzer zu gehören. Ich habe mehr als einen Admin-Benutzer auf diesem Computer. Sie sollten /usr/local
Besitz von root:admin
als Besitzer und Gruppe verlassen.
Wie für Sie habe ich eine /usr/local
, die von meinem Benutzer, der auch Mitglied der admin
Gruppe ist, perfekt beschreibbar ist:
$ ls -ld /usr/local/
drwxrwxr-x 14 root admin 476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd
Lassen Sie uns testen, ob das Verzeichnis wirklich beschreibbar ist:
$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r-- 1 mgd admin 0 23 Jun 14:52 /usr/local/newfile
Weitere Untersuchungen des brew doctor
Codes führten zu dem Schluss, dass die Verwendung der Ruby-Funktion Pathname.writable?
das Problem verursacht. Betrachten Sie diese interaktive Ruby-Sitzung:
$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false
Die Funktion Pathname.writable?
sagt /usr/local
, dass sie nicht beschreibbar ist, obwohl wir wissen, dass sie es ist.
Wenn Pathname.writable_real?
Sie stattdessen verwenden, erhalten Sie das richtige Ergebnis – es besagt, dass das Verzeichnis beschreibbar ist:
>> Pathname('/usr/local').writable_real?
=> true
Dies sollte in behoben werden /usr/local/Library/Homebrew/cmd/doctor.rb
. Sie können es in Ihrer eigenen Installation beheben, während Sie auf einen Fix warten.
Der Unterschied zwischen den beiden Funktionen ist (laut den Ruby-Dokumenten hier und hier ):
beschreibbar?(Dateiname) → wahr oder falsch: Gibt wahr zurück, wenn die benannte Datei von der effektiven Benutzer-ID dieses Prozesses beschreibbar ist.
writable_real?(file_name) → true oder false: Gibt true zurück, wenn die benannte Datei von der echten Benutzer-ID dieses Prozesses beschreibbar ist.
writable_real?
... vielleicht ist es Zeit für eine Pull-Anfrage?!? :-)Ich glaube, du brauchst nur das:
brew update
Dann versuchen Sie es brew doctor
erneut.
Möglicherweise erhalten Sie weiterhin Fehler zu Abhängigkeiten, die Sie nicht verwenden (in meinem Fall Java), was in Ordnung ist. Wenn Sie die Befehlszeilentools für Xcode anstelle der vollständigen Installation von Xcode installiert haben, erhalten Sie auch eine Fehlermeldung, die besagt, dass Sie einen ungültigen Pfad haben, aber direkt in der Nachricht werden Sie auch lesen, dass es keinen gültigen Pfad gibt, wenn Sie es sind Verwenden Sie einfach die Befehlszeilentools für Xcode, also ist das auch in Ordnung.
Zum Nutzen anderer: Denken Sie daran, dass Sie als Administrator angemeldet sein müssen, wenn Sie dies tun, damit es funktioniert.
Ich habe eine Kombination aus den Vorschlägen von iolsmit und Phil M befolgt: Ich habe diese Verzeichnisse auf meinen Benutzernamen gesetzt und dann brew update
erneut ausgeführt, gefolgt von brew doctor
. Dadurch wurden alle Fehlermeldungen beseitigt und Brew-Installationen scheinen jetzt gut zu funktionieren. Danke euch beiden!
Daumen hoch für die Untersuchung und Klärung von @mgd ... es ist genau richtig!
Es scheint, dass ein ähnliches Problem vor etwa einem Jahr auf github.com angesprochen wurde, aber nie (richtig?) gelöst wurde, zumindest nicht durch die Verwendung von writable_real?
... vielleicht ist es Zeit für eine Pull-Anfrage?!? :-)
iolsmit
mgd
/usr/local
gehören sollte, wenn dieser Computer mehrere Administratorbenutzer hat. Außerdem ist es mir möglich, an die Stellen zu schreiben, über die man sich beschwert. Irgendwelche anderen Ideen?brew doctor