Reputation: 5425
Brew doctor says:
Warning: /usr/local/include isn't writable. This can happen if you "sudo make install" software that isn't managed by Homebrew.
If a brew tries to write a header file to this directory, the install will fail during the link step.
You should probably
chown
/usr/local/include
I've tried different commands to solve this but I'm still stuck here.
I'm running homebrew on 10.8.2
Upvotes: 412
Views: 269453
Reputation: 224
First you need to create the directory:
sudo mkdir /usr/local/include
Second:
sudo chown -R $(whoami) $(brew --prefix)/*
Upvotes: 10
Reputation: 21
I just want to echo sam9046's modest comment as an alternative and potentially much easier solution that worked in my case: uninstall and install homebrew again from scratch. No sudo commands required.
You can also browse/modify the uninstall script from that link above if you need to ensure it won't affect your previously installed packages. In my case this was just my home machine so I just started over.
Upvotes: 2
Reputation: 31
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin
sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin
This will create all required directories and give it the correct ownership.
After running these commands check with: brew doctor
This works for Mojave.
Upvotes: 3
Reputation: 2569
Go into the /bin directory and type:
chown -R $(whoami):admin /usr/local/bin
Upvotes: 1
Reputation: 17898
Take ownership of it and everything in it.
Mac OS High Sierra or newer: (ty to Kirk in the comments below)
$ sudo chown -R $(whoami) $(brew --prefix)/*
Previous versions of macos:
$ sudo chown -R $USER:admin /usr/local/include
Then do another
$ brew doctor
Upvotes: 818
Reputation: 3003
If you are on High Sierra and experiencing this issue, follow the steps below (Note: /usr/local cannot be chown'd in High Sierra):
sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*
Then try linking with brew link. I was experiencing similar issue and none of the solutions above worked for High Sierra. Hope this helps someone.
Upvotes: 28
Reputation: 3616
What Worked for me, while having I have more than 1 user on my computer.
Using terminal:
brew doctor
/usr/local/...
isn't writable error'ssudo chown -R $(whoami) /usr/local/*
brew doctor && brew upgrade && brew doctor
Running Macbook Pro OSX High Sierra (version 10.13.3.)
EDIT 1:
FYI - Please be Advised this causes an issue with running MySQL on your MAC.
To be able to start my local server, I had to run:
sudo chown -R mysql:mysql /usr/local/mysql/data
After you run this you can start your local MySQL Server.
Upvotes: 4
Reputation: 41
You need to create /usr/local/include and /usr/local/lib if they don't exists:
$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include
Upvotes: 3
Reputation: 492
For High Sierra:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Then, try your brew commands.
Upvotes: 24
Reputation: 51
Same error on MacOS 10.13
/usr/local/include
and /usr/local/
/usr/lib
were not created. I manually created and brew link
finally worked.
Upvotes: 5
Reputation: 18800
You need to get control of entire /usr/local
to do that you need to do a recursive chown
under /usr/local
sudo chown -R YOUR_USERNAME:admin /usr/local/
Upvotes: 2
Reputation: 146
This worked for me on macOS 10.12
sudo chown -R $(whoami) /usr/local
I had the problem updating homebrew with the following error:
/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
sudo chown -R $(whoami) /usr/local
Upvotes: 12
Reputation: 6186
The only one that worked for me on El Capitan was:
sudo chown -R $(whoami) /usr/local
Upvotes: 40
Reputation: 971
What worked for me was
$ sudo chown -R yourname:admin /usr/local/bin
Upvotes: 40
Reputation: 219
For some it's going to be:
sudo chown -R JonJames:admin /usr/local/lib
where "lib" is used as opposed to "bin" or "include" or "whatever else"
The Homebrew Warning "should" explain what specifically is not writable and then give you a command syntax for follow, however you will need to use the ":" as opposed to what the Warning mentions which is actually not correct syntax??
Upvotes: 8
Reputation: 7415
What worked for me was too
sudo chmod g+w /usr/local
sudo chgrp staff /usr/local
Upvotes: 124
Reputation: 673
Work for me
$ sudo chown -R $(whoami):admin /usr/local
$ cd /usr/local/Library && git stash && git clean -d -f
Upvotes: 7
Reputation: 14625
You can alias the command to fix this problem in your .bash_profile
and run it every time you encounter it:
At the end of the file ~/.bash_profile
, add:
alias fix_brew='sudo chown -R $USER /usr/local/'
And now inside your terminal you can run:
$ fix_brew
Upvotes: 12
Reputation: 2377
I have had this happen in my organization after all our users were bound to active directory (effectively changing the UID from 50x to ######).
Now it is simply a case of changing the ownership of all files where were owned by x to y.
Where 501 is my old numeric user id which is still associated with all the homebrew files.
The old user id can be found using ll /usr/local/Cellar
Now update the ownership
sudo find /usr/local -user 501 -exec chown -h $USER {} \;
This way we avoid changing the ownership on files which are not controlled by homebrew or belong to some other system user.
Upvotes: 1