All your terminology needs can be found here.
First update the formulae and Homebrew itself:
You can now find out what is outdated with:
Upgrade everything with:
Or upgrade a specific formula with:
brew upgrade <formula>
To stop something from being updated/upgraded:
brew pin <formula>
To allow that formulae to update again:
brew unpin <formula>
Note that pinned, outdated formulae that another formula depends on need to be upgraded when required, as we do not allow formulae to be built against outdated versions. If this is not desired, you can instead
brew extract to maintain your own copy of the formula in a tap.
To uninstall Homebrew, run the uninstall script from the Homebrew/install repository.
Homebrew automatically uninstalls old versions of a formula after that formula is upgraded with
brew upgrade, and periodically performs additional cleanup every 30 days.
To disable automatic
brew cleanup is disabled, if you uninstall a formula, it will only remove the latest version you have installed. It will not remove all versions of the formula that you may have installed in the past. Homebrew will continue to attempt to install the newest version it knows about when you run
brew upgrade. This can be surprising.
In this case, to remove a formula entirely, you may run
brew uninstall --force <formula>. Be careful as this is a destructive operation.
Which is usually:
.apps don’t find
GUI apps on macOS don’t have
/usr/local/bin in their
PATH by default. If you’re on Mountain Lion or later, you can fix this by running
sudo launchctl config user path "/usr/local/bin:$PATH" and then rebooting, as documented in
man launchctl. Note that this sets the launchctl
PATH for all users. For earlier versions of macOS, see this page.
Read our contribution guidelines.
If available, bottled binaries will be used by default except under the following conditions:
brew install <formula>will use a bottled version of the formula, but
brew install --enable-bar <formula>will trigger a source build.
--build-from-sourceoption is invoked.
/usr/local(although some bottles support this).
We aim to bottle everything.
brew install hub brew update cd $(brew --repository) hub pull someone_else
/usr/local/binis already in your
/usr/local. We fix this for Homebrew formulae (although we don’t always test for it), but you’ll find that many RubyGems and Python setup scripts break which is something outside our control.
/usr/localby default, so there is no need to worry about messing up existing or system tools.
If you plan to install gems that depend on formulae then save yourself a bunch of hassle and install to
It is not always straightforward to tell
gem to look in non-standard directories for headers and libraries. If you choose
/usr/local, many things will “just work”.
tl;dr Sudo is dangerous, and you installed TextMate.app without sudo anyway.
Homebrew refuses to work using sudo.
You should only ever sudo a tool you trust. Of course, you can trust Homebrew 😉 But do you trust the multi-megabyte Makefile that Homebrew runs? Developers often understand C++ far better than they understand make syntax. It’s too high a risk to sudo such stuff. It could modify (or upload) any files on your system. And indeed, we’ve seen some build scripts try to modify
/usr even when the prefix was specified as something else entirely.
We use the macOS sandbox to stop this but this doesn’t work when run as the
root user (which also has read and write access to almost everything on the system).
chown root /Applications/TextMate.app? Probably not. So is it that important to
chown root wget?
If you need to run Homebrew in a multi-user environment, consider creating a separate user account especially for use of Homebrew.
If it’s not in
man brew, it’s probably an external command. These are documented here.
If it’s been a while, bump it with a “bump” comment. Sometimes we miss requests and there are plenty of them. Maybe we were thinking on something. It will encourage consideration. In the meantime if you could rebase the pull request so that it can be cherry-picked more easily we will love you for a long time.
Yes! It’s easy! Just
brew edit <formula>. You don’t have to submit modifications back to
homebrew/core, just edit the formula as you personally need it and
brew install <formula>. As a bonus
brew update will merge your changes with upstream so you can still keep the formula up-to-date with your personal modifications!
Yes! It’s easy! Just
brew create URL. Homebrew will then open the formula in
EDITOR so you can edit it, but it probably already installs; try it:
install <formula>. If you encounter any issues, run the command with the
--debug switch like so:
brew install --debug <formula>, which drops you into a debugging shell.
If you want your new formula to be part of
homebrew/core or want to learn more about writing formulae, then please read the Formula Cookbook.
brew is designed to not get in your way so you can use it how you like.
Install your own stuff, but be aware that if you install common libraries like libexpat yourself, it may cause trouble when trying to build certain Homebrew formula. As a result
brew doctor will warn you about this.
Thus it’s probably better to install your own stuff to the Cellar and then
brew link it. Like so:
$ cd foo-0.1 $ brew diy ./configure --prefix=/usr/local/Cellar/foo/0.1 $ ./configure --prefix=/usr/local/Cellar/foo/0.1 [snip] $ make && make install $ brew link foo Linking /usr/local/Cellar/foo/0.1… 17 symlinks created
For disabled and deprecated formulae, running
brew info <formula> will also provide an explanation.
Homebrew’s creator @mxcl was too concerned with the beer theme and didn’t consider that the project may actually prove popular. By the time Max realised that it was popular, it was too late. However, today, the first Google hit for “homebrew” is not beer related 😉
It means the formula is installed only into the Cellar and is not linked into
/usr/local. This means most tools will not find it. You can see why a formula was installed as keg-only, and instructions to include it in your
PATH, by running
brew info <formula>.
You can still link in the formula if you need to with
brew link <formula>, though this can cause unexpected behaviour if you are shadowing macOS software.
brew edit <formula> and edit the formula. Currently there is no other way to do this.
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.