【Homebrew】brew doctorで,毎回書き込み権限が無いと言われる問題の意外な原因


はじめに

Homebrewについてです.
OSをアップデートした訳でもなく,何かをいじった記憶もなく,ある日から数時間〜1日時間をあけてbrew doctorをすると毎回「書き込み権限が無い」との警告が出るようになりました.

  • brew doctor: Homebrewに問題がないか調べるコマンド

実際におきたこと

brew doctor で出る警告をまとめると,以下のようになります.
(実際には解決法も一緒に書かれています)

Warning: /usr/local/bin isn't writable.
Warning: /usr/local/share isn't writable.
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.

これを解決するには,

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

をして/usr/local/の所有をユーザーに戻す必要があります.
なぜか次にbrew doctorをするときには所有がrootに戻ってしまうのです.
毎回同じ警告が出て,毎回同じように解決していました.

原因を調べてみた

アンチ・ウイルスソフトの Sophos が原因らしいです!
homebrew に関して問題があるのかと探っていたので,予想外でした.
Macで/usr/local/binの所有者が勝手に変わる問題について
という記事に書かれていました.
Homebrew自体の問題なのかと思っていたのですが,実際はSophosの更新の度に起きる問題だったようです.ウイルス定義のアップデートなどもあり,わりと頻度は高かった気がします.
sudo fs_usage | grep "usr/local"
で,ファイルシステムへのアクセスを確認し,実際に何が原因なのかを確認できます.ただし,相当時間がかかります.

実際に確認してみた

sudo fs_usage | grep "usr/local"
をしたところ,Sophos Update という文字列を見かけました.
やはり原因はSophosだと思ったので,Sophosをアンインストールしました.
アンインストール後,brew doctorをしてもエラーが出なくなりました.
アンインストールする際の注意点なのですが,Sophosゴミ箱に入れてもアンイストールされません.Remove Sophos Anti-Virusというアプリを,ダブルクリックして実行し,指示にしたがってアンインストールできます.

以下のフォーラムで,Sophosの担当者が,この問題に関して2015年11月上旬までには対処すると書いているのですが,まだ対処されていないようです.(2015/11/15現在)
'sweep' command installs itself into /usr/local and changes permissions, wreaking havoc on Homebrew - Sophos Anti-Virus for Mac Home Edition - Free antivirus & tools for desktops - Sophos Community

補足

ClamXAVでも同様の現象があるようです.こちらはインストール時のみのようです.

参考URL