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

352

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

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

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

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

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

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

gaggina
источник
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
jrwren
источник
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 Я просто столкнулся с тем же - вот обходной путь, который я использовал
Кейси Дэвидсон
38

Что сработало для меня

$ sudo chown -R yourname:admin /usr/local/bin
Ана Изабель
источник
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
karlingen
источник
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
7

Работа для меня

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

$ cd /usr/local/Library && git stash && git clean -d -f
Александр Салас Бастидас
источник
5

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

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

Miguel
источник
3

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

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include
waldencoder
источник
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.

JayRizzo
источник
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

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

Sven
источник
2

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

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

надстройка с запятой
источник
2

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

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

adamkski
источник
2

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

sudo mkdir /usr/local/include

Во-вторых:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
источник
1

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

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

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

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

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

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

Tarun
источник
1

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

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

Юсуф
источник