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


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

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

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

37

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

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

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.


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


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

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

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ą?


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


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.


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

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.


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.


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/


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.



2

Najpierw musisz utworzyć katalog:

sudo mkdir /usr/local/include

Druga:

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

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.


1

Przejdź do katalogu / bin i wpisz:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.