

brew cleanupで Permission denied @ apply2files が出た
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
何が起きたか
brew upgrade のあとに自動で走った brew cleanup で、こんなエラーが出た。
Error: Permission denied @ apply2files - /usr/local/lib/docker/cli-pluginsパスは環境によって ghostscript の中のフォントファイルだったり docker 関連だったりバラバラらしい。共通してるのは /usr/local 配下のどこか、というところ。
原因
エラーが出てるパスの所有者を見ると root になってた。Homebrewはユーザー権限で動く前提なので、root所有のファイルに当たると書き込めずに止まる。
自分の場合は、以前入れたDocker Desktopをアンインストールした際に、/usr/local/lib/docker/cli-plugins 配下だけrootのまま残ってたのが原因だった。他にも、他のインストーラ(pkg形式のものとか)がsudoでファイルを置いた場合に同じ現象が起きるらしい。
apply2files というのはHomebrew内部でファイル変更を適用する処理の名前っぽいが、そこは未確認。
直し方
一番手っ取り早いのはHomebrewのprefix配下を丸ごと自分のユーザーに戻すやつ。
sudo chown -R $(whoami) $(brew --prefix)/*$(brew --prefix) を使ってるので、Intel Mac(/usr/local)でもApple Silicon(/opt/homebrew)でも同じコマンドで通る。
グループも合わせて直しておく方が後々のトラブルが減る。
sudo chown -R $(whoami):admin $(brew --prefix)/*補足
- prefix全体をchownするのは応急処置。本来はエラーメッセージに出てる該当パスだけ直す方が安全(無関係なファイルの権限まで変えたくない場合)。
brew installやbrew upgradeそのものにsudoを付けるのはNG。Homebrew公式もそう言ってる。今回のchownはあくまで壊れた所有権を戻すための一回限りの操作。- 該当ディレクトリがアンインストール済みアプリの残骸で、そもそも中身が要らない場合は
mkdir -pでダミーのディレクトリを作るだけで直ることもあるらしい(今回は試してない)。