Korzystam z Homebrew do zarządzania instalacjami pakietów na Lionie (właściwie Lion Server, ale to nie powinno mieć znaczenia) .
Homebrew został zainstalowany pod jednym użytkownikiem. Teraz inny użytkownik chciałby dodać pakiet, a Homebrew nie jest zadowolony:
$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master
Czy to jest uważane za złe? Pomyślałem, że jedną z zalet korzystania /usr/local/
z instalacji jest to, że nie potrzebujesz sudo
. Ale oczywiście to robimy.
Wszyscy użytkownicy, którzy musieliby zmodyfikować Homebrew, są członkami grupy administracyjnej . Mógłbym się chmod -R g+w /usr/local/
jednak obawiać, że to coś rozwali lub stworzy problemy bezpieczeństwa?!?
Rada?
$ 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
źródło
brew doctor
wciąż narzeka, że np./usr/local/include
nie można zapisać, mimo że ręcznie mogę zweryfikować, czy mogę tutaj zapisać plik (np. używającecho "hello" > /usr/local/include/testfile
). Jestem członkiem grupy administracyjnej. Jakieś pomysły na debugowanie?chmod -R g+w /Library/Caches/Homebrew
sudo chown -R $(whoami) $(brew --prefix)/*
zamiast powyższych poleceń. Mam to stądMożesz włączyć uprawnienia homebrew dla więcej niż jednego użytkownika za pośrednictwem grupy administracyjnej lub dowolnej innej grupy użytkowników. Oto nieco rozszerzony przepis, aby to skonfigurować:
Grupa musi administrować lokalnym katalogiem instalacyjnym homebrew. Więc przypisz / usr / local do grupy administracyjnej (lub preferowanej grupy) i włącz uprawnienia do zapisu grupowego:
Grupa potrzebuje również uprawnień do lokalnej pamięci podręcznej formuł i plików źródłowych homebrew w / Library / Caches / Homebrew :
Jeśli napotkasz kolejne podobne problemy z uprawnieniami podczas korzystania z homebrew z wielu kont, zwróć uwagę na ścieżkę obrażeń i rozważ skorzystanie z tego samego podejścia.
Leif Hanack napisał na blogu podobne rozwiązanie , w którym tworzy i konfiguruje dedykowany napar dla grupy użytkowników .
- Aktualizacja 2015-08-20
Niedawno użyłem tej odpowiedzi ponownie, aby skonfigurować konto gościa z dostępem homebrew. Aby użyć Cask z drugiego konta administratora musiałem również uruchomić następujące polecenia:
źródło
Chciałem skomentować zaakceptowaną odpowiedź (ale nie mam jeszcze na to reputacji).
Jako użytkownik Caskroom.io polecam również dodanie:
ponieważ cask, niezwykle przydatne rozszerzenie homebrew, umieszcza wszystkie swoje pliki
/opt/homebrew-cask
źródło
/opt
Chyba masz na myśli/usr/local
? Ponieważ/opt
nie istnieje w ostatnich instalacjach OS X, nawet po instalacji homebrew./usr/local
(lub dokładniej$(brew --prefix)
) z,/opt/homebrew-cask
więc ta odpowiedź jest teraz dyskusyjna, ale była ważna, kiedy została napisana. Zobacz Przenieś domyślną lokalizację w beczce # 21603Musisz wyrazić zgodę na ścieżkę. uruchom to w wierszu poleceń, a będziesz w porządku. To działało dla mnie:
sudo chown -R $ USER / usr / local
źródło
Głosowałbym za ustawieniem uprawnienia grupy - i wydaje mi się, że właśnie po to jest i nie powinno stwarzać problemu z bezpieczeństwem.
źródło
sudo chmod -R g+w /usr/local/
?