
私は Mac OS の 2 番目の「管理者」ユーザーです。私はグループに所属しており、最初のユーザーによってインストールされた を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
答えは見つかりませんが、私も同じ問題に直面しています。しかし、根本的な原因の発見を進め、問題を解決するのに役立つ手がかりがあるかもしれません。私の場合、管理者アカウントが 2 つあるため、brew install で ACL を使用していますが、ACL を使用していないということは、これは私が考えていたように ACL の問題ではない可能性が高いことを意味します。
管理者が誰でもbrewを使用できるように、管理者のACLを設定するインストール後のスクリプトがあります。brewを使用してインストールするたびに、このスクリプトを使用して所有者を復元し、ACLを設定します。
私が知っていることは、setattrlist と fsetattrlist はメタデータ、つまりファインダー/スポットライト情報に関するものであるということです。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 が多くのものを更新するときには面倒ですが、これが今のところ私が見つけた唯一の回避策です。