35

I've been trying to get homebrew working nicely, but it appears everything inside /usr/local isn't writable, and everything falls over.

It keeps telling me to recursively chown /usr/local, and I tried that. Operation denied, so I sudo'd it. It seemed to work, but with an eerie silence that I hear is considered polite in Unix. Unfortunately, any succeeding attempts at brew update meet with the same cacophony of errors.

I reran the command with -v and it looks the operation is not permitted for anything inside.

As much as the answer is probably "learn UNIX" I'm just trying to comply with some job requirements here for a tutorial on Ruby, so that's a few steps above where I'm currently at.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
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.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
  • Does brew doctor tell you anything useful? Post the output here. – Ian C. Jun 19 '15 at 5:47
  • @IanC. It's a long list of everything brew-related not being writable. Is there a stackexchange pastebin utility? There's an awful lot of it. – Tigt Jun 19 '15 at 5:50
  • Well, that's odd. There's a lot less of it now than there was. – Tigt Jun 19 '15 at 5:52
  • Just FYI: I just ran brew update and discovered that "Homebrew no longer needs to have ownership of /usr/local." More info in this question. Obviously to get to that point you'd still need to temporarily update permissions on /usr/local :) – acobster Nov 19 '16 at 21:16
26

This should be solved changing the perms on that directory in the following way:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

If you don't know your group, just type id -g.

  • The important part is the -R to make it recursive. And you probably have to do the chown using sudo. For the user group, I usually use staff on OS X. – nwinkler Jun 19 '15 at 13:43
  • Interesting. Why is using the group so different from just the user? – Tigt Jun 19 '15 at 17:46
  • 4
    Why is it right for /usr/local to be owned by your user? I think that is a security risk, as there are a lot of other programs that use /usr/local and could be silently taken over. Does brew really need something so drastic? – dfrankow Jul 11 '16 at 17:48
  • 1
    I believe this is dangerous as it selects the 'staff' group, which means every user on the OS can then alter the contents of /usr/. You should probably switch to 'admin'. – Indolering Apr 14 '17 at 23:48
  • 1
    @dfrankow yep, this is a blunder of homebrew. They didn't think even what happens if there're two users on same machine. – poige Jan 6 at 18:08
22

You have to use sudo to run the command with elevated priledges, like this:

sudo chown -R `whoami` /usr/local
  • I did. "Operation denied, so I sudo'd it." – Tigt Jun 19 '15 at 5:44
  • 1
    For fish shell users it will be sudo chown -R (whoami) /usr/local – kibin Nov 30 '16 at 21:15
10

I was facing this issue yesterday with macOS 10.13.4 and I tried to sudo chgrp -R admin /usr/local or sudo chown -R <your-username>:<your-group-name> /usr/local which get Operation not permitted error even though using sudo

So I tried to just chgrp for Homebrew related folder to admin (My user is in admin group, depends on the user you are running, you might beed to change to a different group) and grant admin group write access to those folders using these commands

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

After running these commands, I am able to install a new package without any issue. If you hit any permission issue again try to run the first two commands by replacing the folder name with the one that you are hitting permission issue.

Hope this will help the other users with macOS 10.13.

Note: Even though changing the owner for /usr/local or changing the group of /usr/local and grant the access for you group might work, you should NEVER do that as you are modifying the other unrelated folder as well. Modifying the folder(s) you need is much more secure.

  • this really goes well for me! <3 thanks – DariusV Mar 29 at 3:25
  • This should be voted as the correct answer! Thanks for your help! – Yini Sep 10 at 5:26
2

to resolve the permissions issues on the directories we can perform the following command:

brew prune
1

It worked for me.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
0

The answer by Reza in this question worked for me:

sudo chown -R $(whoami) /usr/local/*

You can not change permission for /usr/local itself , but you can change the right permission for folders underneath

You must log in to answer this question.

protected by user151019 Jan 6 at 17:27

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged .