Spraw, aby pliki w `/ usr / local` były zapisywalne dla homebrew

35

Próbowałem sprawić, by homebrew działał ładnie, ale wydaje się, że wszystko w środku /usr/localnie jest zapisywalne i wszystko się przewraca.

Ciągle mi to mówi rekurencyjnie chown /usr/locali próbowałem tego. Operacja odmówiona, więc zrobiłem to. Wydawało się, że działa, ale z niesamowitą ciszą, którą słyszę, w Unixie jest uważany za uprzejmy. Niestety wszelkie kolejne próby brew updatenapotkania tej samej kakofonii błędów.

Zmieniłem polecenie ponownie -vi wygląda na to, że operacja nie jest dozwolona dla niczego w środku.

O ile odpowiedź brzmi prawdopodobnie „naucz się UNIX”, staram się tutaj spełnić pewne wymagania dotyczące pracy w tutorialu na temat Ruby, więc to kilka kroków powyżej, gdzie aktualnie jestem.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Tigt
źródło
Czy brew doctormówi ci coś przydatnego? Opublikuj wynik tutaj.
Ian C.
@IanC. To długa lista wszystkiego, co związane z parzeniem nie jest zapisywalne. Czy istnieje narzędzie pastebin do stosu wymiany? Jest tego okropnie dużo .
Tigt
Cóż, to dziwne. Jest teraz o wiele mniej niż było.
Tigt
Tylko do wiadomości: Właśnie pobiegłem brew updatei odkryłem, że „Homebrew nie musi już mieć własności / usr / local”. Więcej informacji w tym pytaniu . Oczywiście, aby dojść do tego punktu, nadal musisz tymczasowo zaktualizować uprawnienia w
katalogu

Odpowiedzi:

26

Należy to rozwiązać zmieniając perms w tym katalogu w następujący sposób:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Jeśli nie znasz swojej grupy, po prostu wpisz id -g.

Jherran
źródło
Ważną częścią jest -Rrekurencja. I prawdopodobnie masz zrobić to chownza pomocą sudo. W przypadku grupy użytkowników zwykle używam staffw systemie OS X.
nwinkler
Ciekawy. Dlaczego korzystanie z grupy jest tak różne od samego użytkownika?
Tigt
4
Dlaczego użytkownik / usr / local może być własnością użytkownika? Myślę, że jest to zagrożenie dla bezpieczeństwa, ponieważ istnieje wiele innych programów, które używają / usr / local i można je po cichu przejąć. Czy napar naprawdę potrzebuje czegoś tak drastycznego?
dfrankow
1
Uważam, że jest to niebezpieczne, ponieważ wybiera grupę „pracowników”, co oznacza, że ​​każdy użytkownik w systemie operacyjnym może następnie zmienić zawartość / usr /. Prawdopodobnie powinieneś przełączyć się na „admin”.
Indolering
1
@dfrankow tak, to błąd w homebrew. Nie pomyśleli nawet o tym, co się stanie, jeśli na tym samym komputerze będzie dwóch użytkowników.
poige
22

Musisz użyć sudo, aby uruchomić polecenie z podwyższonymi priledges, jak poniżej:

sudo chown -R `whoami` /usr/local
Ian C.
źródło
Zrobiłem. „Operacja odmówiona, więc zrobiłem to”.
Tigt
1
Dla użytkowników skorupek ryb będzie tosudo chown -R (whoami) /usr/local
kibin
10

Wczoraj napotkałem ten problem z systemem macOS 10.13.4 i próbowałem sudo chgrp -R admin /usr/locallub sudo chown -R <your-username>:<your-group-name> /usr/localktóry pojawia się Operation not permittedbłąd, mimo że go używamsudo

Więc próbowałem tylko chgrpdla Homebrewpokrewnego folderu do admin(Mój użytkownik jest w admingrupie, zależy od użytkownika, którego używasz, być może będziesz musiał przejść do innej grupy) i przyznać admingrupie dostęp do zapisu do tych folderów za pomocą tych poleceń

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Po uruchomieniu tych poleceń mogę bez problemu zainstalować nowy pakiet. Jeśli ponownie natrafisz na problem z uprawnieniami, spróbuj uruchomić pierwsze dwa polecenia, zastępując nazwę folderu tą, na której udzielany jest problem z uprawnieniami.

Mam nadzieję, że pomoże to innym użytkownikom systemu macOS 10.13.

Uwaga: Mimo że zmiana właściciela /usr/locallub zmiana grupy /usr/locali przyznanie dostępu dla twojej grupy może działać, NIGDY nie powinieneś tego robić, ponieważ modyfikujesz również inny niepowiązany folder. Modyfikowanie potrzebnych folderów jest o wiele bezpieczniejsze.

Kong
źródło
to naprawdę idzie dobrze dla mnie! <3 dzięki
DariusV
To powinno być uznane za prawidłową odpowiedź! Dzięki za pomoc!
Yini
2

aby rozwiązać problemy z uprawnieniami do katalogów, możemy wykonać następujące polecenie:

brew prune
Catto
źródło
1

To zadziałało dla mnie.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
źródło
0

Odpowiedź Rezy na to pytanie zadziałała dla mnie:

sudo chown -R $(whoami) /usr/local/*

Nie możesz zmienić uprawnień dla samego / usr / local, ale możesz zmienić odpowiednie uprawnienia dla folderów poniżej

spacetyper
źródło