Как исправить разрешения на домашний пиво на MacOS High Sierra

Когда я попытался установить python на homebrew, он загрузил его, а затем в конце появилось сообщение об ошибке, которое остановило его завершение. Когда я пытаюсь сделать это снова, он просит меня сделать:

$ brew link python

После ввода появляется то же сообщение об ошибке:

permission denied @ dir_s_mkdir - /usr/local/lib

Я пытался сделать:

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

И я получаю сообщение об ошибке, которое гласит:

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

Ответ 1

sudo mkdir /usr/local/Frameworks
sudo chown $(whoami):admin /usr/local/Frameworks    
brew link python3

Ответ 2

Я пробовал и имел такой же (я думаю) вывод:

Error: An unexpected error occurred during the 'brew link' step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

Поэтому я создал каталог /usr/local/Frameworks как root, а затем изменил право собственности:

sudo mkdir /usr/local/Frameworks && chown $USER:admin /usr/local/Frameworks

Я попытался снова brew install python:

Warning: python 2.7.14 is already installed, it just not linked.
You can use 'brew link python' to link this version.

И затем brew link python:

Linking /usr/local/Cellar/python/2.7.14... 26 symlinks created

Теперь в каталоге /usr/local/Frameworks/Python.framework/Я вижу ссылки, например:

lrwxr-xr-x 1 niquit admin  62 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Headers -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Headers/
lrwxr-xr-x 1 niquit admin  61 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Python -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Python*
lrwxr-xr-x 1 niquit admin  64 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Resources -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Resources/

В вашем случае я предлагаю создать вручную /usr/local/lib:

sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib

A сделал тест mv/usr/local/lib{,.orig}, и я получил:

Error: An unexpected error occurred during the 'brew link' step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/lib
Error: Permission denied @ dir_s_mkdir - /usr/local/lib

Как и до того, как я создал вручную каталог sudo mkdir/usr/local/lib && chown $USER:admin/usr/local/lib и успешно сделал brew link python:

Linking /usr/local/Cellar/python/2.7.14... 324 symlinks created

Теперь я могу найти некоторые ссылки:

lrwxr-xr-x 1 niquit admin  54 Dec  8 22:01 python-2.7.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python-2.7.pc
lrwxr-xr-x 1 niquit admin  50 Dec  8 22:01 python.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python.pc
lrwxr-xr-x 1 niquit admin  51 Dec  8 22:01 python2.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python2.pc

Я думаю, что Apple после последнего обновления увеличила безопасность, поэтому его невозможно создать в каталоге /usr/without root.

Ответ 3

/usr/local больше нельзя кормить в High Sierra. Вместо этого используйте

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

Ответ 4

sudo mkdir /usr/local/Frameworks

sudo chown $USER /usr/local/Frameworks

А затем попробуйте переустановить Python. Это работало абсолютно нормально для меня.

Ответ 5

Устранение и выполнение чистой установки homebrew устранит проблему.

Ответ 6

Запустите это и следуйте его рекомендациям:

brew doctor

В моем случае он хотел, чтобы я бежал:

sudo mkdir -p /usr/local/sbin /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/sbin /usr/local/Frameworks

Ответ 7

В моем случае с MacOS 10.14 свежая установка на новую машину:

brew doctor

И это предполагает:

sudo mkdir -p /usr/local/lib /usr/local/sbin
sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin

Ответ 8

Я переустановил пиво и исправил проблему.

для удаления используйте следующую команду.

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

и снова установить варево.

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

Ответ 9

brew doctor

Эта команда, как предложил Крис выше в комментариях, разрешила почти ВСЕ мои проблемы с домашним пивом, работающие на Mac Mini 2011 5,1 с неофициально работающей MacOS Mojave. Просто введите это и следуйте всем указаниям, которые печатает терминал

Ответ 10

Как уже упоминалось, при помощи henrikstroem обратные ссылки могут быть полезны, и, как упоминалось в bnaecker, специальные атрибуты также могут препятствовать процессу.

Вы также можете попробовать запустить команду непосредственно с правами root, чтобы увидеть, будут ли лучшие результаты, выполнив sudo su - и затем chown -R username/usr/local

Но вы уверены, что это действительно то, что вы хотите? Возможно, было бы более интересно создать группу, которая имеет доступ к ней (например, chown -R originaluser:group/usr/local, установить права, которые вы хотите, и/или сделать свою пользовательскую часть этой группы.

Ответ 11

macOS предоставляет несколько способов управления доступом к файлам, помимо традиционных разрешений для пользователя, группы и других. Это включает списки управления доступом (ACL), флаги файлов, расширенные атрибуты (xattrs) и, в последнее время, защиту целостности системы Apple.

Я ls -lO/usr/ что если вы запустите ls -lO/usr/, чтобы перечислить флаги, вы увидите uchg перед /usr/local, который инструктирует систему сделать файл неизменным любым пользователем. (u в uchg означает, что владелец файла может изменить этот флаг. Ни владелец, ни какой-либо другой пользователь не могут изменять сам файл.)

Чтобы решить проблему, сначала нужно удалить флаг, запустив: chflags nouchg/usr/local. Это должно удалить флаг uchg, который вы должны снова проверить с помощью ls -lO. Если установлен другой флаг, например schg, используйте noschg или no<flag> в общем, но вам понадобятся команды sudo когда флаг начинается с s.

На этом этапе вам все равно придется chown каталог, используя sudo chown -R $(whoami)/usr/local. Теперь вы должны владеть каталогом, а инструменты Homebrew должны работать нормально.

Ответ 12

Я просто сделал это, и все получилось нормально:

sudo touch /usr/local/Frameworks
brew link python