Доктор Brew говорит: «Предупреждение: / usr / local / include не доступен для записи».


352

Заваривать доктор говорит:

Предупреждение: / usr / local / include не доступен для записи. Это может произойти, если вы используете программу sudo make install, которая не управляется Homebrew.

Если brew попытается записать файл заголовка в этот каталог, во время шага установки произойдет сбой установки.

Вы, вероятно, должны chown/ usr / local / include

Я пробовал разные команды, чтобы решить эту проблему, но я все еще застрял здесь.

Я запускаю доморощенный на 10.8.2


1
Я получил похожую ошибку для "/ usr / local / lib" в Homebrew 0.9.4, которая также была решена с помощью решения ниже.
JeremiahLee

Ответы:


680

Взять на себя ответственность за все это.

Mac OS High Sierra или новее: (связывайтесь с Кирком в комментариях ниже)

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

Предыдущие версии macos:

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

Тогда сделай другой

$ brew doctor

13
операция не разрешена?
topwik

68
Любое преимущество вместо $ sudo chown -R `whoami` /usr/local/?
Лабу

2
@ ВиллемЛабу на одну вилку меньше? whoami - это эффективный идентификатор пользователя, и, как говорит справочная страница, устарел :) bash - оболочка по умолчанию для OSX, и где-то USER устанавливается.
jrwren

7
Интересно, является ли смена владельца / usr / local для пользователя чистым решением? Не лучше ли добавить $ USER в группу wheel? Или изменить группу / usr / local на группу администраторов?
Майкл Лен,

13
Согласно Homebrew в Mac OS High Sierra chown /usr/localбольше не работает. Вместо этого используйтеsudo chown -R $(whoami) $(brew --prefix)/*
Кирк Хамметт

115

То, что работало для меня, было слишком

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
Это единственное исправленное исправление, не слишком разумное, чтобы стать владельцем / usr / local в многопользовательской среде
Александр Торстлинг

3
Нужно получить этому парню несколько голосов! ;) Это сработало отлично.
jrista

1
Это лучшее решение ИМХО
jacurtis

5
Ну, не в Высокой Сьерре. «Невозможно изменить режим файла в / usr / local: операция не разрешена»
user980018

1
@ user980018 Я просто столкнулся с тем же - вот обходной путь, который я использовал
Кейси Дэвидсон


37

Единственный, кто работал для меня на Эль-Капитане, был:

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

5
chown: / usr / local: операция не разрешена
AlxVallejo

1
@AlxVallejo делал это на / usr / local / bin, работал для меня
marcotama

23

Если вы находитесь в High Sierra и столкнулись с этой проблемой, выполните следующие действия ( Примечание: / usr / local не может быть chown'd в High Sierra ):

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

Тогда попробуйте связать с brew link. Я столкнулся с подобной проблемой, и ни одно из вышеперечисленных решений не сработало для High Sierra. Надеюсь, это кому-нибудь поможет.


21

Для Высокой Сьерры:

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

Затем попробуйте свои команды заваривать.

Выпуск № 3285


2
Не уверен, почему это было отклонено, если ранее вы установили brew и обновили его до High Sierra, переустановка Homebrew устраняет проблему. Это самый простой подход
sam9046

По иронии судьбы, это потому, что сценарий делает именно то, что предлагают другие ответы.
Гонки

Это сработало для меня, но сначала я удалил предыдущее, используя: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

Вы можете использовать псевдоним команды, чтобы исправить эту проблему, .bash_profileи запускать ее каждый раз, когда вы сталкиваетесь с ней:

В конце файла ~/.bash_profileдобавьте:

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

И теперь внутри вашего терминала вы можете запустить:

$ fix_brew

12

Это работает для меня на MacOS 10.12

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

У меня была проблема при обновлении homebrew со следующей ошибкой:

/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

Для некоторых это будет:

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

где «lib» используется вместо «bin» или «include» или «что-либо еще»

Доморощенное предупреждение «должно» объяснить, что конкретно не доступно для записи, а затем дать вам синтаксис команды для следования, однако вам нужно будет использовать «:», в отличие от того, что в предупреждении упоминается, что на самом деле неверный синтаксис ??


Синтаксис в предупреждении немного сбивает с толку, я полагаю, я послал по электронной почте ведущему участнику Homebrew, чтобы спросить, будут ли они что-то менять по этому поводу, ожидая ответа, возможно, словосочетание Warning изменится в будущих обновлениях brew.
Джонатан Джеймс

Спасибо! Это сработало после большого количества поисков.
thiswayup


5

Та же ошибка на MacOS 10.13

/usr/local/include а также /usr/local/ /usr/lib не были созданы. Я вручную создал и, brew linkнаконец, работал.


3

Вам нужно создать / usr / local / include и / usr / local / lib, если они не существуют:

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

3

Что сработало для меня, имея при этом больше 1 пользователя на моем компьютере.

Используя терминал:

  • Бег brew doctor
    • Видя множественные /usr/local/...ошибки не записывается
  • Отключение защиты целостности системы Mac: https://apple.stackexchange.com/a/208481/55628
  • Запустите следующее
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Работает Macbook Pro OSX High Sierra (версия 10.13.3.)

РЕДАКТИРОВАТЬ 1:

К вашему сведению - имейте в виду, что это вызывает проблему с запуском MySQL на вашем MAC.

Чтобы иметь возможность запустить мой локальный сервер, мне нужно было выполнить:

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

После этого вы можете запустить свой локальный сервер MySQL.


1
Отлично! Спасибо!
Шмули

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

Это создаст все необходимые каталоги и даст ему правильное владение.

После запуска этих команд проверьте: brew doctor

Это работает для Мохаве.


2

Вы должны получить контроль над всем, /usr/localчтобы сделать это, вам нужно сделать рекурсивную chownпод/usr/local

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


2

Я просто хочу повторить скромный комментарий sam9046 как альтернативное и потенциально гораздо более простое решение, которое сработало в моем случае: удалить и установить homebrew заново с нуля. Команды sudo не требуются.

Вы также можете просмотреть / изменить скрипт удаления по этой ссылке выше, если вам нужно убедиться, что он не повлияет на ваши ранее установленные пакеты. В моем случае это была просто моя домашняя машина, поэтому я просто начал все сначала.



2

Сначала вам нужно создать каталог:

sudo mkdir /usr/local/include

Во-вторых:

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

1

Это произошло в моей организации после того, как все наши пользователи были привязаны к активному каталогу (фактически изменив UID с 50x до ######).

Теперь это просто случай смены владельца всех файлов, принадлежащих x на y.

Где 501 - мой старый числовой идентификатор пользователя, который все еще связан со всеми файлами homebrew.

Старый идентификатор пользователя можно найти с помощью ll /usr/local/Cellar

Теперь обновите владение sudo find /usr/local -user 501 -exec chown -h $USER {} \;

Таким образом, мы избегаем изменения владельца файлов, которые не контролируются homebrew или принадлежат другому пользователю системы.


1

Перейдите в каталог / bin и введите:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.