
Я второй пользователь "Администратор" на Mac OS. Я в группе admin
и пытаюсь использовать homebrew
, который был установлен первым пользователем.
Я убедился, что все файлы /usr/local/*
доступны для записи admin
, sudo chmod -R g+w /usr/local/*
т.е.
При попытке запустить brew install
несколько разных пакетов я получаю несколько из этих ошибок
cp: setattrlist: /usr/local/Cellar/[email protected]/.: Permission denied
cp: chmod: /usr/local/Cellar/[email protected]/.: Operation not permitted
Error: Failure while executing; `cp -pR /private/tmp/d20210523-60782-14t7vu8/[email protected]/. /usr/local/Cellar/[email protected]` exited with 1. Here's the output:
cp: setattrlist: /usr/local/Cellar/[email protected]/.: Permission denied
cp: chmod: /usr/local/Cellar/[email protected]/.: Operation not permitted
Но при проверке папка имеет те разрешения, которые я ожидал.
:; ls -al /usr/local/Cellar/icu4c/
total 0
drwxrwxr-x 3 user1 admin 96 May 23 14:06 .
drwxrwxr-x 73 user1 admin 2336 May 23 14:05 ..
drwxrwxr-x 12 user1 admin 384 May 23 14:06 67.1
Кто-нибудь знает, что я здесь упускаю?
решение1
У меня нет ответа, хотя я столкнулся с той же проблемой, но, возможно, есть какие-то подсказки, которые помогут продвинуться в поиске первопричины и, возможно, решить проблему. Со своей стороны, я использую ACL при установке brew, поскольку у меня две учетные записи администратора, но поскольку вы не используете ACL, это означает, что это, скорее всего, не проблема ACL, как я думал.
У меня есть скрипт после установки, который устанавливает ACL для администраторов, так что любой администратор может использовать brew. Каждый раз, когда я использую brew для установки, я использую этот скрипт для восстановления владельца и установки ACL
Что я знаю, так это то, что setattrlist и fsetattrlist касаются метаданных, так что информация finder/spotlight. Я не нашел способа с ACL избавиться от этой ошибки чисто.
Я могу воспроизвести его вне установки Homebrew, если использовать тот же способ, которым Homebrew выполняет копирование.
например $ cp -pR /usr/local/Cellar/webp ~/webp $ cp -pR ~/webp/. /usr/local/Cellar/webp # ⇒ выдаст ошибку прав доступа или ошибку setattrlist $ cp -pR ~/webp /usr/local/Cellar/webp # ⇒ работает, так что, вероятно, в homebrew есть исправление для поиска и удаления /. из исходного кода cp.
До сих пор, когда я получаю эту ошибку, я удаляю каталог из Cellar и перезапускаю команду brew install.
утомительно, когда brew обновляет много вещей, но это единственный обходной путь, который я нашел на данный момент.