Brew Brew mówi: „Ostrzeżenie: / usr / local / include nie jest zapisywalne”.

352

Doktor Brew mówi:

Ostrzeżenie: / usr / local / include nie jest zapisywalny. Może się to zdarzyć, jeśli oprogramowanie „sudo make install” nie jest zarządzane przez Homebrew.

Jeśli browar spróbuje zapisać plik nagłówkowy w tym katalogu, instalacja nie powiedzie się podczas kroku łącza.

Prawdopodobnie powinieneś chown/ usr / local / include

Próbowałem rozwiązać różne polecenia, ale utknąłem tutaj.

Korzystam z homebrew na 10.8.2

gaggina
źródło
1
Otrzymałem podobny błąd dla „/ usr / local / lib” w Homebrew 0.9.4, który został również rozwiązany za pomocą poniższego rozwiązania.
JeremiahLee

Odpowiedzi:

680

Przejmij na własność i wszystko w nim.

Mac OS High Sierra lub nowszy: (ty do Kirka w komentarzach poniżej)

$ sudo chown -R $(whoami) $(brew --prefix)/*

Poprzednie wersje macos:

$ sudo chown -R $USER:admin /usr/local/include

Następnie zrób inną

$ brew doctor
jrwren
źródło
12
operacja niedozwolona?
topwik
68
Jakaś przewaga zamiast $ sudo chown -R `whoami` /usr/local/?
Labu
2
@WillemLabu jeden mniej widelec do procesu? whoami jest efektywnym identyfikatorem użytkownika i jak mówi strona podręcznika jest przestarzała :) bash jest domyślną powłoką w OSX i gdzieś ustawia się USER.
jrwren
7
Zastanawiam się, czy zmiana właściciela / usr / local na użytkownika to czyste rozwiązanie. Czy nie byłoby lepiej dodać $ USER do grupy „koło”? Lub zmienić grupę / usr / local na grupę administracyjną?
Michael Lehn
13
Według Homebrew w Mac OS Chown High Sierra /usr/localjuż nie działa. Zamiast tego użyjsudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett
115

To, co zadziałało, też było dla mnie

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local
Durul Dalkanat
źródło
20
Jest to jedyna rozsądna poprawka, nie bardzo rozsądna, aby przejąć własność / usr / local w systemie dla wielu użytkowników
Alexander Torstling
3
Musisz zdobyć tego faceta! ;) To działało świetnie.
jrista
1
To jest lepsze rozwiązanie IMHO
jacurtis
5
Cóż, nie w High Sierra. „Nie można zmienić trybu pliku na / usr / local: Operacja niedozwolona”
user980018,
1
@ user980018 Właśnie natrafiłem na to samo - oto obejście, którego użyłem
Casey Davidson,
38

To, co zadziałało, było dla mnie

$ sudo chown -R yourname:admin /usr/local/bin
Ana Isabel
źródło
37

Jedyny, który pracował dla mnie na El Capitan, to:

sudo chown -R $(whoami) /usr/local
Ochrypły
źródło
5
chown: / usr / local: Operacja niedozwolona
AlxVallejo
1
@AlxVallejo robi to na / usr / local / bin pracował dla mnie
marcotama
23

Jeśli jesteś w High Sierra i doświadczasz tego problemu, wykonaj poniższe czynności ( Uwaga: w usłudze High Sierra nie można znaleźć / usr / local ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Następnie spróbuj połączyć z zaparzeniem. Wystąpił podobny problem i żadne z powyższych rozwiązań nie zadziałało w przypadku High Sierra. Mam nadzieję, że to komuś pomoże.

Zawodowiec
źródło
20

Dla High Sierra:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Następnie wypróbuj swoje polecenia parzenia.

Wydanie # 3285

Mahi
źródło
2
Nie jestem pewien, dlaczego zostało to odrzucone, jeśli wcześniej zainstalowałeś brew i zaktualizowałeś go do High Sierra, ponowna instalacja Homebrew rozwiązuje problem. To najłatwiejsze podejście
sam9046
Jak na ironię, ponieważ skrypt robi dokładnie to, co sugerują inne odpowiedzi.
Wyścigi lekkości na orbicie
To zadziałało dla mnie, ale najpierw odinstalowałem poprzednie, używając: ruby ​​-e „$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )”
abbas,
12

Możesz dokonać aliasu polecenia, aby rozwiązać ten problem .bash_profilei uruchomić go za każdym razem, gdy go napotkasz:

Na końcu pliku ~/.bash_profiledodaj:

alias fix_brew='sudo chown -R $USER /usr/local/'

A teraz w swoim terminalu możesz uruchomić:

$ fix_brew
karlingen
źródło
12

To działało dla mnie na macOS 10.12

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

Miałem problem z aktualizacją Homebrew z następującym błędem:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local
Max
źródło
8

Dla niektórych będzie to:

sudo chown -R JonJames:admin /usr/local/lib

gdzie „lib” jest używane w przeciwieństwie do „bin” lub „include” lub „cokolwiek innego”

Ostrzeżenie Homebrew „powinno” wyjaśnić, co konkretnie nie jest zapisywalne, a następnie podać składnię polecenia do naśladowania, jednak będziesz musiał użyć „:” w przeciwieństwie do tego, o czym Ostrzeżenie mówi, która w rzeczywistości nie jest poprawną składnią?

Jonathan James
źródło
Wydaje mi się, że składnia w Ostrzeżenie jest nieco myląca. Wysłałem e-maila do głównego współpracownika Homebrew, aby zapytać, czy cokolwiek by się zmieniło, czekając na odpowiedź, być może ostrzeżenie Ostrzeżenie zmieni się w przyszłych aktualizacjach naparu.
Jonathan James
dzięki! Działało to po sporej ilości poszukiwań.
razem do
7

Pracuj dla mnie

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

$ cd /usr/local/Library && git stash && git clean -d -f
Alexander Salas Bastidas
źródło
5

Ten sam błąd w systemie MacOS 10.13

/usr/local/includei /usr/local/ /usr/libnie zostały stworzone. Ręcznie stworzyłem i w brew linkkońcu pracowałem.

Miguel
źródło
3

Musisz utworzyć / usr / local / include i / usr / local / lib, jeśli nie istnieją:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include
waldencoder
źródło
3

Co działało dla mnie, mając więcej na swoim komputerze niż jednego użytkownika.

Za pomocą terminala:

  • Bieganie brew doctor
    • Widzenie wielu /usr/local/...nie jest błędem do zapisu
  • Wyłączanie ochrony integralności systemu Maca: https://apple.stackexchange.com/a/208481/55628
  • Uruchom następujące
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Uruchamianie Macbooka Pro OSX High Sierra (wersja 10.13.3.)

EDYCJA 1:

Do Twojej wiadomości - Informujemy, że powoduje to problem z uruchomieniem MySQL na twoim MAC.

Aby móc uruchomić mój lokalny serwer, musiałem uruchomić:

sudo chown -R mysql:mysql /usr/local/mysql/data

Po uruchomieniu możesz uruchomić lokalny serwer MySQL.

JayRizzo
źródło
1
Świetny! Dziękuję Ci!
shmuli
3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Spowoduje to utworzenie wszystkich wymaganych katalogów i nadanie mu właściwej własności.

Po uruchomieniu tych poleceń sprawdź: brew doctor

Działa to dla Mojave.

Sven
źródło
2

Musisz przejąć kontrolę nad całością, /usr/localaby to zrobić, musisz zrobić rekursywne chownpod/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/

dodaj średniki
źródło
2

Chcę tylko powtórzyć skromny komentarz sam9046 jako alternatywne i potencjalnie znacznie łatwiejsze rozwiązanie, które zadziałało w moim przypadku: odinstaluj i zainstaluj homebrew ponownie od zera. Żadne polecenia sudo nie są wymagane.

Możesz również przeglądać / modyfikować skrypt dezinstalacyjny z powyższego łącza, jeśli chcesz upewnić się, że nie wpłynie to na wcześniej zainstalowane pakiety. W moim przypadku była to tylko moja domowa maszyna, więc zacząłem od nowa.

adamkski
źródło
2

Najpierw musisz utworzyć katalog:

sudo mkdir /usr/local/include

Druga:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
źródło
1

Zdarzyło mi się to w mojej organizacji po tym, jak wszyscy nasi użytkownicy zostali przywiązani do active directory (skutecznie zmieniając UID z 50x na ######).

Teraz chodzi po prostu o zmianę własności wszystkich plików, które były własnością x na y.

Gdzie 501 to mój stary numeryczny identyfikator użytkownika, który wciąż jest powiązany ze wszystkimi plikami homebrew.

Stary identyfikator użytkownika można znaleźć za pomocą ll /usr/local/Cellar

Teraz zaktualizuj własność sudo find /usr/local -user 501 -exec chown -h $USER {} \;

W ten sposób unikamy zmiany własności plików, które nie są kontrolowane przez homebrew lub należą do innego użytkownika systemu.

Tarun
źródło
1

Przejdź do katalogu / bin i wpisz:

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

Yusuf
źródło