Ich verwende Homebrew , um Paketinstallationen auf Lion zu verwalten (Lion Server eigentlich, aber das sollte keine Rolle spielen) .
Homebrew wurde unter einem Benutzer installiert. Jetzt möchte ein anderer Benutzer ein Paket hinzufügen und Homebrew ist nicht glücklich:
$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master
Wird das als schlecht empfunden? Ich dachte, einer der Vorteile der Verwendung /usr/local/
für Ihre Installationen wäre, dass Sie sudo
. Aber klar tun wir das.
Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Admin -Gruppe. Ich könnte also chmod -R g+w /usr/local/
befürchten, dass dies etwas bork oder Sicherheitsprobleme schafft?!?
Rat?
$ ls -al /usr/local/.git/
total 432
drwxr-xr-x 14 ladmin admin 476 Feb 24 11:48 .
drwxrwxr-x 14 root admin 476 Feb 9 15:27 ..
-rw-r--r-- 1 ladmin admin 94 Feb 24 11:48 FETCH_HEAD
-rw-r--r-- 1 ladmin admin 23 Feb 24 11:48 HEAD
-rw-r--r-- 1 ladmin admin 41 Feb 9 15:28 ORIG_HEAD
drwxr-xr-x 2 ladmin admin 68 Feb 9 15:27 branches
-rw-r--r-- 1 ladmin admin 218 Feb 9 15:27 config
-rw-r--r-- 1 ladmin admin 73 Feb 9 15:27 description
drwxr-xr-x 12 ladmin admin 408 Feb 9 15:27 hooks
-rw-r--r-- 1 ladmin admin 200272 Feb 24 11:48 index
drwxr-xr-x 3 ladmin admin 102 Feb 9 15:27 info
drwxr-xr-x 4 ladmin admin 136 Feb 9 15:27 logs
drwxr-xr-x 4 ladmin admin 136 Feb 9 15:27 objects
drwxr-xr-x 5 ladmin admin 170 Feb 9 15:27 refs
Wird das als schlecht empfunden? Ich dachte, einer der Vorteile der Verwendung von /usr/local/ für Ihre Installationen wäre, dass Sie sudo nicht benötigen. Aber klar tun wir das.
Homebrew richtet sich standardmäßig für den Einzelbenutzerzugriff auf /usr/local
. Sie müssen also die Berechtigungen für den Verzeichnisbaum öffnen, damit er von mehr als einer Person verwaltet werden kann.
Die Leute müssen sudo hier nicht ausführen, um Homebrew zu verwalten. Sie müssen nur einige Berechtigungen ändern. Da Sie bereits haben:
Alle Benutzer, die Homebrew ändern müssten, sind Mitglieder der Admin-Gruppe.
Sie müssen noch zwei Dinge tun:
/usr/local
zur Gruppe gehört admin
; undadmin
unter schreiben kann /usr/local
.In diesem Fall sind die Änderungen vorzunehmen:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
Und jeder Benutzer aus der admin
Gruppe sollte in der Lage sein, die Homebrew-Installation auf dem Computer zu verwalten. Wenn Sie der Admin-Gruppe einen Benutzer hinzufügen müssen, können Sie dies wie folgt tun:
dseditgroup -o edit -a <username> -t user admin
(Dieser Benutzer muss sich erneut anmelden, um die Berechtigungen zu erhalten).
Aus Gründen der Gesundheit auf dem Computer sollten Sie in Betracht ziehen , einen eigenen Fork von Homebrew zu erstellen und Ihr lokales Homebrew-Git-Repository auf den lokalen Fork verweisen zu lassen. Auf diese Weise können Sie Homebrew für Ihre Umgebung anpassen und die Versionen von Paketen steuern, die Benutzer mit dem brew
Befehl installieren können. Wenn mehrere Personen Installationen durchführen, könnten Sie auf Versionsprobleme oder Abhängigkeitsprobleme stoßen.
Sie können Homebrew-Berechtigungen für mehr als einen Benutzer über die Admin-Gruppe oder über jede andere Benutzergruppe aktivieren. Hier ist ein leicht erweitertes Rezept, um dies zu konfigurieren:
Die Gruppe muss das lokale Homebrew-Installationsverzeichnis verwalten. Weisen Sie also /usr/local der Admin -Gruppe (oder Ihrer bevorzugten Gruppe) zu und aktivieren Sie die Schreibberechtigungen der Gruppe:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
Die Gruppe benötigt auch Berechtigungen für den lokalen Cache von Homebrew für Formeln und Quelldateien unter /Library/Caches/Homebrew :
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
Wenn Sie bei der Verwendung von Homebrew von mehreren Konten auf weitere ähnliche Berechtigungsprobleme stoßen, notieren Sie den anstößigen Pfad und erwägen Sie, denselben Ansatz zu versuchen.
Leif Hanack hat eine ähnliche Lösung gebloggt , wo er für diesen Zweck eine eigene Benutzergruppe erstellt und konfiguriert .
--Update 2015-08-20
Ich habe diese Antwort kürzlich erneut verwendet, um ein Gastkonto mit Homebrew-Zugriff einzurichten. Um Cask vom zweiten Administratorkonto aus zu verwenden, musste ich auch die folgenden Befehle ausführen:
chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
Ich wollte gerade die akzeptierte Antwort kommentieren (aber ich habe noch nicht den Ruf dafür.)
Als Benutzer von Caskroom.io würde ich außerdem empfehlen, Folgendes hinzuzufügen:
sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w /Library/Caches/Homebrew/
da cask, eine äußerst nützliche Erweiterung für Homebrew, alle seine Dateien einfügt/opt/homebrew-cask
/opt
ich schätze du meinst /usr/local
? Da /opt
dies bei neueren OS X-Installationen nicht der Fall ist, selbst nach einer Homebrew-Installation./usr/local
(oder genauer gesagt $(brew --prefix)
) von verschoben, /opt/homebrew-cask
sodass diese Antwort jetzt umstritten ist, aber gültig war, als sie geschrieben wurde. Siehe Verschieben des Standard-Caskroom-Standorts #21603Sie müssen dem Pfad eine Berechtigung erteilen. Führen Sie dies in der Befehlszeile aus und Sie können loslegen. Bei mir hat es funktioniert:
sudo chown -R $USER /usr/local
Ich würde für das Festlegen der Gruppenberechtigung stimmen - und meiner Meinung nach ist es genau das, wofür es da ist und sollte kein Sicherheitsproblem verursachen.
tl;dr Sudo ist gefährlich, und Sie haben TextMate.app sowieso ohne sudo installiert.
Homebrew ist so konzipiert, dass es ohne die Verwendung von sudo funktioniert. Sie können sich entscheiden, es zu verwenden, aber wir raten dringend davon ab. Wenn Sie sudo verwendet haben und auf einen Fehler gestoßen sind, ist dies wahrscheinlich die Ursache. Bitte reichen Sie keinen Fehlerbericht ein, es sei denn, Sie können ihn reproduzieren, nachdem Sie Homebrew von Grund auf neu installiert haben, ohne sudo zu verwenden.
sudo chmod -R g+w /usr/local/
?
mgd
brew doctor
beschwert sich immer noch, dass zB/usr/local/include
nicht beschreibbar ist, obwohl ich manuell überprüfen kann, ob ich hier in eine Datei schreiben kann (zB mitecho "hello" > /usr/local/include/testfile
). Ich bin Mitglied der Admin-Gruppe. Irgendwelche Ideen zum Debuggen?Zeichnete Dara-Abrams
chmod -R g+w /Library/Caches/Homebrew
Steven Shaw
Endareth
Jeff Kranenburg
sudo chown -R $(whoami) $(brew --prefix)/*
anstelle der obigen Befehle. Habe es von hiercubuspl42
g+w
Neuinstallationen standardmäßig auch eine Berechtigung haben? Muss ich diese Befehle immer wieder ausführen?