Homebrew brew updateでエラーが起こった

brew update したら怒られた。

brew update
==> error: unable to unlink old 'README.md' (Permission denied)
==> Error: Failure while executing: git pull -q origin refs/heads/master:refs/re
  • アクセスが拒否されたから古いREADME.mdへのリンクを削除できなかった
  • git pull 実行中に失敗した

的なことが書いてある。ので、brew doctorで医者に聞いてみる。

エラーの内容は2つ。

brew doctor

Warning: The /usr/local directory is not writable.


Warning: 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 are known to do this.
 
 You should probably change the ownership and permissions of /usr/local
 back to your user account.

一つ目。大体こんなことが書いてあるっぽい。

/usr/local ディレクトリが書き込み可能ではありません。
Homebrewインストール時に書き込み可能であっても、他のソフトがこのディレクトリのパーミッションを変更することがあります。

自分のユーザーアカウントに戻って /usr/local の所有権とパーミッションを変更する必要があります。

対処

権限を確認してみる

cd /usr
ls -al

結果

drwxr-xr-x 22 root wheel 748 6 30 09:12 local/

確かにlocal ディレクトリのパーミションが755, グループがwheelになっとる。
下記コマンドで775, staffに戻す。

sudo chgrp staff /usr/local
sudo chmod 775 /usr/local

再度確認。

drwxrwxr-x    22 root  staff    748  6 30 09:12 local/

解決。

Warning: You have uncommitted modifications to Homebrew

Warning: You have uncommitted modifications to Homebrew
 If this a surprise to you, then you should stash these modifications.
 Stashing returns Homebrew to a pristine state but can be undone
 should you later need to do so for some reason.
     cd /usr/local/Library && git stash && git clean -d -f
 

正直よくわからんけど、一番下のコマンドを実行すべしってことだと思うので、やってみた。

cd /usr/local/Library && git stash && git clean -d -f

再度、brew doctor

brew doctor
Your system is ready to brew.

解決!

brew updateができました。

参考記事: