Używam homebrew
jako menedżera pakietów dla niektórych aplikacji do tworzenia stron internetowych. Aby brew
być na bieżąco, biegam update brew
co kilka dni, a także biegam brew doctor
. Zwykle jest to w porządku i brew
mówi mi, że jestem gotowy do zaparzenia.
Od czasu do czasu pojawia się jednak następujący błąd:
Ostrzeżenie: / usr / local / etc nie jest zapisywalny.
Może się tak zdarzyć, jeśli oprogramowanie „sudo make install” nie jest zarządzane przez Homebrew. Jeśli formuła spróbuje zapisać plik w tym katalogu, instalacja nie powiedzie się podczas kroku łączenia.
Powinieneś prawdopodobnie
chown
/ usr / local / etcOstrzeżenie: katalogu / usr / local nie można zapisywać. Nawet jeśli ten katalog był zapisywalny po zainstalowaniu Homebrew, inne oprogramowanie może zmienić uprawnienia do tego katalogu. Niektóre wersje komponentu „InstantOn” Airfoil są znane z tego.
Prawdopodobnie powinieneś zmienić własność i uprawnienia / usr / local z powrotem na swoje konto użytkownika.
Zresetowanie uprawnień z powrotem do mojej nazwy użytkownika jest dość łatwe. Potem brew
wydaje się być w porządku.
Ale co powoduje to?
Czy istnieje dziennik pokazujący, co powoduje zmianę uprawnień?
źródło
/usr/local
. Ale jeśli nalegasz, możesz to zrobićmake install
bez użyciasudo
pakietów, które sam instalujesz./usr/local
?Odpowiedzi:
Miałem dokładnie ten sam problem i okazało się, że winna była automatyczna aktualizacja Sophos. Zrozumiałem to, uruchamiając:
sudo fs_usage | grep "usr/local"
Minęło trochę czasu, ale w końcu zobaczyłem pomocnego demona Sophosa o nazwie „Instalacja”, który bałagał się uprawnieniami / usr / local.
Nadal próbuję znaleźć odpowiednią metodę obejścia tego zachowania.
EDYCJA: Wierzę, że Sophos naprawił ten problem, patrz link w komentarzach do tej odpowiedzi. Wydaje mi się, że przynajmniej zostało to naprawione!
źródło
Okazuje się, że winowajcą jest Filewave. Filewave to oprogramowanie do zarządzania systemem używane przez naszą szkołę do przekazywania aktualizacji oprogramowania. Dzięki za wkład.
źródło
Mam tylko przybliżony pomysł, jak zdobyć złodzieja zezwoleń. To nie jest rozwiązanie twojego problemu, ale coś w rodzaju obejścia.
Co powiesz na napisanie watchdoga w Automatorze lub Hazel (akcje folderów) do oglądania tego konkretnego folderu, ale zamiast dodania funkcji takiej jak Skalowanie obrazów, po prostu używasz shellscript, który wykonuje kilka poleceń powłoki:
fuser <foldername>
.ps auxwwwwww | grep <process id>
) i na końcuNiestety nie jestem sadhu Automatora, ale dowiedziałem się od Google, że istnieje wiele rozwiązań podobnych problemów.
źródło
Jeśli korzystasz z Wehikułu Czasu, możesz znaleźć przybliżony czas zmiany uprawnień, eksplorując
Backups.backupdb
w Terminalu. Użyjls -ld
w folderach ze znacznikami czasu, npKtóre pokażą informacje o właścicielu i grupie.
Po ustaleniu daty zmiany możesz dowiedzieć się, co jeszcze mogło się zmienić w twoim systemie. Prostą techniką jest użycie Pliku Findera ›Znajdź i dodaj
Last modified date
kryterium. Inne narzędzia są dobrefind
imdfind
w terminalu.źródło
Jest to efekt uboczny aktualizacji systemu; OS X prawdopodobnie dokonuje „ogólnej” naprawy „uprawnień” podczas procesu aktualizacji, ponieważ / usr / local jest zagnieżdżony w folderze będącym własnością root.
źródło
Czy używałeś polecenia
Disk Utility
select,Macintosh HD
a następnie uruchom,Verify Disk Permission
a następnie wRepair Disk Permission
razie potrzeby, zamiast robić to ręcznie?Teraz to nie powinno rozwiązać problemu, ale jest to dobry „znany” punkt wyjścia, aby zobaczyć, kiedy home-brew zmieni uprawnienia. Jeśli masz szczęście, może pojawić się podstawowy problem.
Również w
new update -v
celu uzyskania bardziej szczegółowych informacji, a także starych dzienników,~/Library/Logs/Homebrew
jak w artykule Gdzie dziennik homebrew?źródło
Disk Utility
nie weryfikuje ani nie naprawia uprawnień,/usr/local
ponieważ ten katalog nie istnieje w nowej instalacji Yosemite./usr/local
i działającDU
. Nie ma żadnego/usr/local
wDU
dzienniku. I/usr/local
wciąż należy do mnie.