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 への移行をするのがよろしいかと思います。