brew/docs/Taps.md

83 lines
3.5 KiB
Markdown
Raw Normal View History

# Taps (Third-Party Repositories)
2017-01-04 16:16:00 -06:00
2021-11-14 12:40:29 -05:00
The `brew tap` command adds more repositories to the list of formulae that Homebrew tracks, updates,
and installs from. By default, `tap` assumes that the repositories come from GitHub,
but the command isn't limited to any one location.
## The `brew tap` command
2021-11-14 12:40:29 -05:00
* `brew tap` without arguments lists all currently tapped repositories. For
example:
2021-08-06 12:52:36 -04:00
```sh
$ brew tap
2021-11-14 12:40:29 -05:00
homebrew/cask
2021-08-06 12:52:36 -04:00
homebrew/core
2021-11-14 12:40:29 -05:00
petere/postgresql
2021-08-06 12:52:36 -04:00
```
<!-- vale Homebrew.Terms = OFF -->
<!-- The `terms` lint suggests changing "repo" to "repository". But we need the abbreviation in the tap syntax and URL example. -->
2021-08-06 12:52:36 -04:00
* `brew tap <user/repo>` makes a clone of the repository at
2021-11-14 12:40:29 -05:00
_https://github.com/\<user>/homebrew-\<repo>_ into `$(brew --repository)/Library/Taps`.
After that, `brew` will be able to work with those formulae as if they were in Homebrew's
[homebrew/core](https://github.com/Homebrew/homebrew-core) canonical repository.
You can install and uninstall them with `brew [un]install`, and the formulae are
automatically updated when you run `brew update`. (See below for details
about how `brew tap` handles the names of repositories.)
2021-08-06 12:52:36 -04:00
<!-- vale Homebrew.Terms = ON -->
2021-11-14 12:40:29 -05:00
* `brew tap <user/repo> <URL>` makes a clone of the repository at _URL_.
Unlike the one-argument version, _URL_ is not assumed to be GitHub, and it
doesn't have to be HTTP. Any location and any protocol that Git can handle is
2021-11-14 12:40:29 -05:00
fine, although non-GitHub taps require running `brew tap --force-auto-update <user/repo>`
to enable automatic updating.
* `brew tap --repair` migrates tapped formulae from a symlink-based to
directory-based structure. (This should only need to be run once.)
* `brew untap user/repo [user/repo user/repo ...]` removes the given taps. The
repositories are deleted and `brew` will no longer be aware of their formulae.
`brew untap` can handle multiple removals at once.
## Repository naming conventions and assumptions
2021-11-14 12:40:29 -05:00
On GitHub, your repository must be named `homebrew-something` to use
the one-argument form of `brew tap`. The prefix "homebrew-" is not optional.
(The two-argument form doesn't have this limitation, but it forces you to
give the full URL explicitly.)
2021-11-14 12:40:29 -05:00
When you use `brew tap` on the command line, however, you can leave out the
"homebrew-" prefix in commands. That is, `brew tap username/foobar` can be used as a shortcut for the long
version: `brew tap username/homebrew-foobar`. `brew` will automatically add
back the "homebrew-" prefix whenever it's necessary.
## Formula with duplicate names
If your tap contains a formula that is also present in
[homebrew/core](https://github.com/Homebrew/homebrew-core), that's fine,
2021-11-14 12:40:29 -05:00
but you would need to specify its fully qualified name in the form
`<user>/<repo>/<formula>` to install your version.
2021-11-14 12:40:29 -05:00
Whenever a `brew install foo` command is issued, `brew` selects which formula
2015-07-27 18:51:53 +08:00
to use by searching in the following order:
* core formulae
* other taps
2015-07-27 18:51:53 +08:00
If you need a formula to be installed from a particular tap, you can use fully
qualified names to refer to them.
2021-11-14 12:40:29 -05:00
If you were to create a tap for an alternative `vim` formula, the behaviour would be:
```sh
brew install vim # installs from homebrew/core
brew install username/repo/vim # installs from your custom repository
```
2015-07-27 18:51:53 +08:00
2021-11-14 12:40:29 -05:00
As a result, we recommend you give new names to customized formulae if you want to make
them easier to install. Note that there is (intentionally) no way of replacing
2021-11-14 12:40:29 -05:00
dependencies of core formulae with those from other taps.