336
votes

Sometimes I see articles saying command of brew tap before brew install something. I am wondering what does tap mean? And why must I run tap before install?

3
It is to access other repositories that are not included in Homebrew's master repository. You must tap before installing a package that is from another repository. You can see all current taps with brew tap. - Caleb
The other comment is correct, but by way of explanation, when you tap a resource, you gain access to it. But it is also another beer/brewing reference (as is homebrew) because when you tap a keg of beer you are essentially knocking a valve into it to "gain access to the beer". - Mark Setchell
If you are confused by the multitude of beer-related verbs, as I am, there is a glossary. - Andrew M
The only good thing about brew's name is that it's short - Niall Connaughton
Why is this on StackOverflow? It's not about writing code -- Unix & Linux or Ask Different are more obviously appropriate. - Charles Duffy

3 Answers

342
votes

The tap command allows Homebrew to tap into another repository of formulae. Once you've done this you've expanded your options of installable software.

These additional Git repos (inside /usr/local/Homebrew/Library/Taps) describe sets of package formulae that are available for installation.

E.g.

brew tap                     # list tapped repositories
brew tap <tapname>           # add tap
brew untap <tapname>         # remove a tap
52
votes

brew tap adds more repos to the list of formulae that brew tracks, updates, and installs from

brew tap <user>/<repo> makes a shallow clone of the repository at https://github.com/user/homebrew-repo. Note that brew tap prefixes the repo name with "homebrew-". After that, brew will be able to work on those formulae as if they were in Homebrew's canonical repository

The full documentation can be found here with all the available options.

15
votes

Homebrew jargon:

  • package <==> formula <==> ruby file; this typically deals with command line (CLI) software
  • bottle <==> binary program already built for macOS (configurations and make is already done)
  • casks <==> GUI program or font; this is an extension of homebrew that allows us to install MacOS native applications like: Google Chrome (brew cask install google-chrome), iTerm (" " iterm2), Visual Studio Code (" " visual-studio-code), etc. As well as install fonts: Roboto[ Mono] (" " font-roboto/" " font-roboto-mono), Latin Modern (" " font-latin-modern), etc.
  • taps <==> Github repositories

  • Packages are installed into /usr/local/Cellar/<package> with symlinks into /usr/local/bin and /usr/local/lib, etc.
  • Homebrew core repo formulae:
    • downloaded to /usr/local/Homebrew/Library/taps/homebrew/homebrew-core/formula

Find any package: https://formulae.brew.sh/