Aktualizacja naparu w El Capitan

38

Właśnie uaktualniłem do El Capitan, a kiedy próbowałem zaktualizować brew, otrzymałem następujący błąd:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

Zanim przejdę do chownzalecenia, biorąc pod uwagę, że El Capitan właśnie wyszedł, czy jest to właściwy sposób, aby przejść tutaj? Dlaczego ten krok jest konieczny i jakie są potencjalne niepożądane konsekwencje uruchomienia tego polecenia?

Na wypadek, gdyby to pomogło, znalazłem dwa problemy dotyczące El Capitan w brew: 40837 i 41665, ale rozwiązanie tego problemu nie było od razu jasne. Co mogę zrobić, aby nadal brewniezawodnie korzystać z El Capitan?

Amelio Vazquez-Reina
źródło
2
Cóż, zrobiłeś to, co sugeruje wiadomość, zmieniłeś właściciela /usr/local?
user3439894,
Rodzi to doskonałe pytanie w przypadku wielu użytkowników (lub jednego użytkownika z wieloma kontami o różnych profilach) na tym samym komputerze.
Walt Stoneburner,
4
Pisanie sudo chown -Rna maszynie daje mi wolę. Nie ma znaczenia, jakie są pozostałe parametry. Mam więcej niż Homebrew /usr/locali nie jest to oczywiście bezpieczne polecenie. Potwierdziłem za pośrednictwem Time Machine, że instalowanie El Capitan chowned, wyłącznie /usr/local, a nie podkatalogów. W ten sposób udało mi się uniknąć nierekurencyjnej rewersji, tj sudo chown $(whoami):admin /usr/local. YMMV.
duozmo
@duozmo ma rację. -RW sudo chown -Rnaprawdę ciężki przekazał. Jest to równoznaczne z domniemaniem Brew do całej domeny/usr/local
HairOfTheDog

Odpowiedzi:

31

Mam na myśli, że dają ci rozwiązanie właśnie tam. Miałem ten sam problem i właśnie uruchomiłem:

  sudo chown -R $(whoami):admin /usr/local

i zadziałało.

Wyświetlana nazwa
źródło
1
+1 Musiałem też zresetować uprawnienia mojego użytkownika zgodnie z opisem. Żadnych dalszych problemów po tym drobnym ulepszeniu - homebrew i moje pakiety były bardzo niezawodne 10.11.
bmike
22
To tak naprawdę nie odpowiada na pytanie: Można założyć, że Apple zablokował / usr / local z jakiegoś powodu i że ta poprawka NIE jest odpowiednia dla El Capitan. Przeglądam teraz, czy Apple zapewnia jakieś wskazówki. Pytanie brzmi: „... biorąc pod uwagę, że właśnie pojawił się El Capitan, czy jest to właściwy sposób, aby przejść tutaj?”
Michael Welch
1
@MichaelWelch Odpowiedź została opublikowana przed tą edycją.
DisplayName
1
Przepraszam @DisplayName Powinienem był spojrzeć na znaczniki czasu.
Michael Welch,
2
To jest poprawna odpowiedź. Zobacz github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… - Uruchomiłem $ brew doctori odkryłem, że flacbrakuje zależności. Potem $ brew install flacmusiałem uparcie biegać $ brew updatejeszcze kilka razy.
Ando,
9

Nie musimy już o tym myśleć. Zaryzykowałem poradę i zmieniłem sugerowane pozwolenie. Następnie, po aktualizacji do najnowszej wersji Homebrew, otrzymałem uspokajający komunikat:

Homebrew nie musi już posiadać własności / usr / local. Jeśli chcesz, możesz przywrócić domyślną własność / usr / local za pomocą: sudo chown root: wheel / usr / local

JannieT
źródło
Jak więc rozwiązać ten problem?
Rajesh Maurya
@RajeshMaurya skorzysta z rozwiązania Karolusa
JannieT
8

W przypadku niektórych powyższych pytań bezpieczeństwa okno dialogowe zawiera instrukcje resetowania po udanej aktualizacji naparu. Po bieganiu

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

I wtedy

brew update

Po pomyślnym uruchomieniu aktualizacji okno dialogowe powinno wskazywać wykonanie:

sudo chown root:wheel /usr/local

Po jego uruchomieniu powinno to złagodzić wszelkie obawy związane z bezpieczeństwem w systemie MacOS 10.12

karolus
źródło
chown: / usr / local: Operacja niedozwolona
Rajesh Maurya
6

Podane rozwiązanie nie działało dla mnie:

sudo chown -R $(whoami):admin /usr/local

Ta odmiana zadziałała dla mnie:

sudo chown -R $USER /usr/local/

Brian Spiering
źródło
1
sudo chown -R $ USER / usr / local / pracował dla mnie na najnowszym systemie macOS
Alex Trott,
1
chown: / usr / local /: Operacja niedozwolona
Rajesh Maurya
dodaj, sudoa następnie wpisz hasło na poziomie administratora
Brian Spiering
1
Nadal chown: / usr / local /: Operacja jest niedozwolona, ​​nawet jeśli wpisam hasło roota.
2myCharlie
0

Naprawiam to za pomocą tego polecenia sudo chown -R admin /usr/local.

Lee Li
źródło
-1

proszę spojrzeć na SIP z:

csrutil status

ochrona integralności systemu jest ustawiona na „włącz”, a ostatni atrybut Apple „ograniczony”:

csrutil 
bigben
źródło
3
Jak to rozwiązuje problem wskazany w pytaniu?
nohillside
-1

To zadziałało dla mnie.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
źródło
1
Oba te rozwiązania nie działają dla mnie. Nadal pokazuje: chown: / usr / local: Operacja niedozwolona
2myCharlie
-2

ochrona integralności systemu musi być wyłączona. Możesz to z tym zrobić.

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

Wyłącza to ochronę integralności systemu w całym systemie. Wierzę, że możesz to zrobić również w trybie odzyskiwania. Nadal musisz wpisać hasło roota podczas robienia rzeczy z sudo, ale SIP nie blokuje Cię. Nie będziesz też otwierać katalogów przypadkowo, próbując ustawić uprawnienia.

Harry McGovern
źródło
3
Nie ma potrzeby wyłączania SIP w celu zmiany właściciela poniżej /usr/local.
nohillside