112

Attempting to install rvm and ruby 1.9.2

I already installed homebrew and git, but couldn't get complete updates because I kept getting permission errors. Re-installed Snow Leopard and repaired permissions.

Now this happens...

$ brew install wget

Error: Cannot write to /usr/local/Cellar

1
  • stackoverflow.com/questions/4804169/… should be marked as accepted answer - i fear that visitors who do not see that this question has not been answered they will move on Commented Sep 26, 2015 at 19:23

8 Answers 8

273

sudo chown -R $USER /usr/local

You'll have to give yourself ownership of /usr/local/ using that line right there. I had to do this myself after using the ruby one-liner at the top of the official docs to install Homebrew. Worked like a charm for me. It ought to be the only time you'll ever need to sudo with Homebrew.

I'm not sure if the ruby one-liner does this. If it did, then something else on my system took control of /usr/local since.

Edit: I completely missed this, but @samvermette didn't (see replies to my answer): if you run this command above and have something installed via homebrew that requires special user permissions, like mysql, make sure to give those permissions back (as the above command gives recursive ownership to everything inside /usr/local to you ($USER). In the case of mysql, it's…

sudo chown -RL mysql:mysql /usr/local/mysql/data

Sign up to request clarification or add additional context in comments.

8 Comments

Please note: this command is going to remove ownership of /usr/local/mysql/data from the mysql user. In my case that prevented mysql from starting up. Fix that with: sudo chown -RL mysql:mysql /usr/local/mysql/data
I avoided the mysql issue by using sudo chown -R $USER /usr/local/Cellar as /usr/local/ already had the correct permissions for me
I'm confused, does mysql need ownership of everything that is within mysql? Such as /var/local/var/mysql and /usr/local/Cellar/ ?? What about /tmp which is where mysql looks for the sock file? I've rattled my brain over the past 24 hours over getting a brew mysql to run properly. Then I get write errors on brew doctor where the directories are 777. It's very annoying and everyone seems to have a different answer.
I dislike this answer. It assumes that only one user ever uses the system and that user should own everything /usr/local, despite the question being only about homebrew. Does brew not work with multiuser systems? It's a sloppy answer, even if it does work. Furthermore, it doesn't explain how a user might have encountered this situation. Hint - I installed HomeBrew using the canonical instructions, then restored from a TimeMachine backup (to another machine). I suspect it was that restore that altered the file ownership.
I agree with @JasonR.Coombs; people should not be using this sloppy solution without understanding the practical and security ramifications. Any software in /usr/local may now be overwritten by anything running under your user, opening a security hole. It is entirely possible you will screw something else up (in addition to MySQL) by blindly running the first chown command, after which point it will be too late to identify and fix everything that you may have just screwed up.
|
41

I had this issue after upgrading to Mavericks, and this page was the top search result when googling the error message. I continued searching and found this answer on stack overflow.com. Put concisely, it is:

sudo chmod a+w /usr/local/Cellar 

This fixed the issue for me, and as it only changes permissions for the specific path referenced in the error message, seemed unlikely to have negative side effects with other installations.

I'm putting this answer here for anyone else who may find this page first like I did. However, credit should go to jdi.

2 Comments

Is this considered inscure, as everyone can now write to /usr/local/Cellar?
This answer fails for packages that require access to other folders (such as /usr/local/bin).
11

You can allow only Admin users writing into /usr/local/?

chgrp -R admin /usr/local chmod -R g+w /usr/local chgrp -R admin /Library/Caches/Homebrew chmod -R g+w /Library/Caches/Homebrew 

Since that each user who belongs to Admin group, will be able to install new dependencies.

3 Comments

Looks like a better solution for multi-administrator machines (although my /usr/local/lib directory also needed g+x for aspell to work).
To avoid getting the 'The "brew link" step did not complete successfully' error you could also apply what's in this thread, namely sudo chgrp -R admin /usr/local/DDDD + sudo chmod -R g+w /usr/local/DDDD where DDDD is bin, share, Library/LinkedKegs, opt
Thnx for the anwer, i had to use "sudo", so if these command does not work, try to prefix it with sudo
5

On High Sierra you need the following command cause chown will not work:

sudo chown -R $(whoami) $(brew --prefix)/*

Link:

https://github.com/Homebrew/brew/issues/3228

Comments

2

uninstall and re install HomeBrew that will do the trick

Comments

1

I suggest ensuring that the current user is a member of the group that owns /usr/local. I believe by default, that group is wheel. To make yourself a member of that group:

$ sudo dscl . append /Groups/wheel GroupMembership $USER 

Although something of an inelegant hammer, it has the intended effect - enabling access to items in /usr/local that are intended only for use (read/write) by elevated members. This approach has benefits of the other above because it takes advantage of the group memberships, enabling multiple (authorized) users on the system to use homebrew.

Comments

0

How did you install Homebrew? Their official installation instructions include running a ruby script. That should take care of the permission issues for you.

If you don't want to run a script, there is a section of that page called "Installing to /usr/local for Developers" that explains the change in permissions needed for the /usr/local directory.

1 Comment

i used a script and it installed but it still had problems updating. I migrated user data onto a new laptop. Had to do a few workarounds from github b/c the script didn't work at first.
-3

EDIT: As mentioned in the comments it's a bad idea to use sudo with homebrew, so don't use the following answer!


You can also prevent this error if you execute the command with sudo:

$ sudo brew install wget 

But take care of using sudo because you can make a lot of mistakes.

1 Comment

This approach fails with late versions of homebrew that disallow invocation as root (via sudo).

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.