macOS用のパッケージ管理システムである Homebrew のアップデートコマンド 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 or running Cocktail cleanup/optimizations
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
エラー: ディレクトリ /usr/local に書き込み権限がありません。
たとえ Homebrew のインストール時にこのディレクトリが書き込み可能であったとしても、他のソフトウェアがこのディレクトリの書き込み権限を変更してしまった可能性があります。
Airfoil の “InstantOn” のあるバージョンや Cocktail のコマンド cleanup/optimizations によってこのことが起こることが知られています。
あなたのユーザーアカウントに /usr/local への所有・変更権限を戻す必要があると考えられます。
(以下のコマンドによって)
sudo chown -R $(whoami):admin /usr/local
このエラーは上記の通り、何らかの理由で Homebrew のインストール後に /usr/local の書き込み権限が変更されてしまったことによって起こります。
一応、Homebrew で発生している問題を調べるためのコマンドである brew doctor で詳しい状況を確認してみると、以下のように同じ旨の内容が出力されます。
エラーの解決方法
エラーメッセージの通りのコマンドを入力することで、この問題は解決できます。
sudo chown -R $(whoami) /usr/local
:admin はなくても問題ありませんでした。
$(whoami) という変数にはユーザー名が入っており、そのまま使用できます。
そのため、ユーザー名を知りたいのであれば以下のコマンドを使うことができます。
echo $(whoami)
「Who am I?」
実際に /usr/local への権限を取り戻すコマンドを実行した後、brew update を実行した例を以下に示します。
コマンド実行後、問題なくアップデートが完了していることが確認できます。