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:
May need to upgrade XQuartz to latest version Related Articles. Homebrew; Install RVM on Mac; Troubleshooting.
- To see, if I was affected by this issue in the first place, I ran the command brew doctorwhich basically told, that yes, I was affected.
- As a next step, I changed the ownership of the directory /usr/localby runningsudo chown $(whoami):admin /usr/local. Note! Not recursively with switch -R.
- Then I rerun brew doctor. In case of my elderly iMac, all was clear, and Homebrew was up and running again.
- In case of my MacBook Pro, I needed to run the same for directory /usr/local/share/man/man8withsudo chown $(whoami):admin /usr/local/share/man/man8. After this,brew doctorgave all clear, and I was able to run Homebrew again.

- I just upgraded to El Capitan, and when I tried updating brew I got the following error: $ brew update Error: The /usr/local directory is not writable. Even if this directory was writable when you installed Homebrew, other software may change permissions on this directory.
- It appears that El Capitan's new security system, 'System Integrity Protection', removes libdvdcss. After disabling SIP, simply reinstall libdvdcss and you're good to go. You might try moving it to /usr/local/lib instead. That's specifically not protected by SIP.

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!
El Capitan High School
- 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. ↩