Обновление варева в Эль-Капитане

38

Я только что обновился до El Capitan, и при попытке обновления brewя получил следующую ошибку:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

Прежде чем приступить к chownрекомендации, учитывая, что El Capitan только что вышел, это правильный путь? Почему этот шаг необходим, и каковы возможные нежелательные последствия выполнения этой команды?

В случае, если это поможет, я обнаружил две проблемы с El Capitan brew: 40837 и 41665, но решение этой проблемы не было сразу ясным. Что я могу сделать, чтобы продолжать brewнадежно использовать в El Capitan?

Амелио Васкес-Рейна
источник
2
Хорошо, вы сделали, как предлагается сообщение, сменить владельца /usr/local?
user3439894
Это поднимает отличный вопрос для случая, когда несколько пользователей (или один пользователь с несколькими учетными записями, имеющими разные профили) на одном компьютере.
Уолт Стоунбернер
4
Печатание sudo chown -Rдает мне воли. Не имеет значения, каковы другие параметры. У меня больше, чем у Homebrew /usr/local, и это явно не безопасная команда. Через Time Machine я подтвердил, что устанавливал только El Capitan chowned, /usr/localа не подкаталоги. Я был , таким образом , в состоянии уйти с делать нерекурсивные реверсии, то есть sudo chown $(whoami):admin /usr/local. YMMV.
duozmo
@duozmo прав. -RВ sudo chown -Rдействительно тяжелых передал. Это равносильно тому, что Brew претендует на домен в целом/usr/local
HairOfTheDog

Ответы:

31

Я имею в виду, они дают вам решение прямо там. У меня была такая же проблема, и я просто побежал:

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

и это сработало.

Отображаемое имя
источник
1
+1 Мне также нужно было сбросить разрешения моего пользователя, как описано. Больше никаких проблем после этого небольшого изменения - homebrew и мои пакеты были очень надежными 10.11.
bmike
22
Это на самом деле не отвечает на вопрос: можно предположить, что Apple заблокировала / usr / local по причине и что это исправление НЕ подходит для El Capitan. Я сейчас гуглю, чтобы посмотреть, даст ли Apple какое-то руководство. Вопрос в том, что «... учитывая, что« Эль-Капитан »только что вышел, это правильный путь?»
Майкл Уэлч
1
@MichaelWelch Ответ был опубликован до этого редактирования.
DisplayName
1
Извините @DisplayName Я должен был посмотреть на отметки времени.
Майкл Уэлч
2
Это правильный ответ. См. Github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… - я побежал $ brew doctorи обнаружил, что flacзависимость отсутствует. После того, как $ brew install flacмне пришлось упорно работать $ brew updateеще пару раз.
Андо
9

Нам больше не нужно ломать голову об этом. Я рискнул советом и сделал предлагаемое изменение разрешения. Затем, при обновлении до последнего доморощенного, я получил это обнадеживающее сообщение:

Доморощенный больше не должен владеть / usr / local. Если вы хотите, вы можете вернуть / usr / local к владельцу по умолчанию с помощью: sudo chown root: wheel / usr / local

JannieT
источник
Так как решить эту проблему?
Раджеш Маурья
@RajeshMaurya использовать решение от Karolus
JannieT
8

В соответствии с некоторыми из приведенных выше вопросов безопасности в диалоговом окне содержатся инструкции по сбросу после успешного обновления brew. После запуска

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

А потом

brew update

После успешного запуска обновления в диалоговом окне должно быть указано следующее:

sudo chown root:wheel /usr/local

После того, как это будет выполнено, это должно устранить любые проблемы безопасности с MacOS 10.12

Karolus
источник
chown: / usr / local: операция не разрешена
Раджеш Маурья
6

Данное решение не сработало для меня:

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

Этот вариант работал для меня:

sudo chown -R $USER /usr/local/

Брайан Спиеринг
источник
1
sudo chown -R $ USER / usr / local / работал для меня в последней версии macOS
Алекс Тротт
1
chown: / usr / local /: Операция не разрешена
Раджеш Маурья
добавьте, sudoзатем введите пароль корневого уровня
Brian Spiering
1
Все еще chown: / usr / local /: Операция не разрешена, даже если я ввожу пароль root.
2myCharlie
0

Я исправляю это с помощью этой команды sudo chown -R admin /usr/local.

Ли Ли
источник
-1

пожалуйста, посмотрите на SIP с:

csrutil status

защита целостности системы установлена ​​на «enable», а последний атрибут Apple ограничен:

csrutil 
Биг Бен
источник
3
Как это решает проблему, указанную в вопросе?
холме
-1

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

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Махфуз
источник
1
Оба эти решения не работают для меня. Он по-прежнему показывает: chown: / usr / local: операция не разрешена
2myCharlie
-2

защита целостности системы должна быть отключена. Вы можете сделать это с этим.

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

Это отключает защиту целостности системы во всей системе. Я считаю, что вы также можете сделать это из режима восстановления. Вы все равно должны вводить свой пароль root при работе с sudo, но вы не заблокированы SIP. Вы также не открываете каталоги по неосторожности, пытаясь установить права доступа.

Гарри Макговерн
источник
3
Нет необходимости отключать SIP для смены владельца ниже /usr/local.
холме