Доктор 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.