Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away