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:
- 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. - As a next step, I changed the ownership of the directory
/usr/local
by 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/man8
withsudo 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!
Footnotes
-
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. ↩