Note on Homebrew and OS X El Capitan

Apple released yesterday, September 30th, the new version of OS X called El Capitan. I upgraded today my both machines (iMac and MacBook Pro), and there is one issue with Homebrew, when it is installed on default location on /usr/local.

This is caused by a change in Apple's security features, called System Integrity Protection, or SIP for short. Basically SIP prevents you from writing to various system locations (e.g. /usr/local), even if you are root.

There is a workaround in Homebrew's docs, but I suggest not to run it as it is said there. This is because there may be some other files for non-Homebrew installed software, like something for F-Secure, and I really don't want to change the ownership of those files and directories.

Instead I did the following:

  1. To see, if I was affected by this issue in the first place, I ran the command brew doctor which basically told, that yes, I was affected.
  2. As a next step, I changed the ownership of the directory /usr/local by running sudo chown $(whoami):admin /usr/local. Note! Not recursively with switch -R.
  3. Then I rerun brew doctor. In case of my elderly iMac, all was clear, and Homebrew was up and running again.
  4. In case of my MacBook Pro, I needed to run the same for directory /usr/local/share/man/man8 with sudo chown $(whoami):admin /usr/local/share/man/man8. After this, brew doctor gave all clear, and I was able to run Homebrew again.

By the way, this is probably necessary to do after every single OS X update in the future, see Apple's dev docs for more.1

Why /usr/local in the first place? Since it is the default location for Homebrew, and I did not know better several years ago. Read more from Hacker News.

Hope this helps, happy brewing!

  1. Update after the release of 10.11.1 on October 21st 2015: The update process did not change the directory permissions or ownership on /usr/local. Phew.