Mac OS X El Capitan にアップデートした後に brew update が動かない場合の対処方法

Mac OS X を El Capitan にアップデートした際に brew update がうまく動かない場合の対処方法について。

エラー

$ brew update
error: unable to unlink old '.travis.yml' (Permission denied)
Error: Failure while executing: git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master

対処方法

私の場合は /usr/local ディレクトリの所有者が root になっていたことが原因のようでした。

まずは所有者を利用ユーザーに変更します。

$ sudo chown $(whoami):admin /usr/local

再度試すと Git 周りでまた別のエラーが出てしまいます。

$ brew update
...
...
Library/Formula/ratfor.rb already exists, no checkout
Library/Formula/sickrage.rb already exists, no checkout
Library/Formula/viennacl.rb already exists, no checkout
Library/Formula/viewvc.rb already exists, no checkout
Library/Formula/xxhash.rb already exists, no checkout
Could not restore untracked files from stash
Error: Failure while executing: git stash pop --quiet

次のスレッドのコメントに従ってリポジトリを整理します。

$ cd $(brew --prefix) && git fetch && git reset --hard origin/master.

$ brew update

問題なく動くようになりました。

方々で話が上がっていますが、 El Capitan になって新たに System Integrity Protection という名称のセキュリティ機能が追加されたとのことで、その影響で /usr/local ディレクトリを使用する Homebrew 周りでトラブルが発生することが確認されています。 このあたりは対策も行われているようなので、 Homebrew をお使いで El Capitan へのアップグレードをまだ行っていない方は brew update をかけた後に El Capitan への移行をするのがよろしいかと思います。