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.