homebrew的tap功能详解


Homebrew是使用ruby开发的Mac的软件包管理器.
这里就说明一下有关Taps(third-party-repositories)的知识


brew tap可以为brew的软件的 跟踪,更新,安装添加更多的的tap formulae

如果你在核心仓库没有找到你需要的软件,那么你就需要安装第三方的仓库去安装你需要的软件

tap命令的仓库源默认来至于Github,但是这个命令也不限制于这一个地方

brew tap 命令

  • brew tap 没有参数会自动更新已经存在的tap并列出当前已经tapped的仓库
    tap_update
    tap_list

  • brew tap <user>/<repo> 在本地对这个 https://github.com/user/repo 仓库上做了一个浅度的克隆,完成之后 brew就可以在这个仓库包含的formulae上工作,好比就在Homebrew规范的仓库,你可使用brew install 或者brew uninstall安装或者卸载这个仓库上的软件。当你执行brew update这个命令时,tapformulae 就会自定更新
    tap_one

  • brew tap <user>/<repo> URL 在本地对这个 URL 仓库上做了一个浅度的克隆,和上面一个参数命令是不一样的,URL没有默认关联到Github,这个URL没有要求必须是HTTP协议,任何位置和任何协议而且Git也是能很好的处理的

  • brew untap <user>/<repo> [<user>/<repo> <user>/<repo> ...] 移除已经安装的tap.这个仓库被删除,brew就不在可用在这个仓库的formulae.可以同时删除几个仓库

仓库命名的规范

  • Github上,你的仓库名称必须是homebrew-something,为了使用一个参数的brew tap命令,homebrew-这个前缀不是可选的,是必须的。
    对于两个参数的brew tap命令没有这个限制,但是必须给出明确的全部的URL地址
  • 当你在命令行使用brew tap时,你可以省略homebrew-这个前缀的

也就是说:brew tap username/foobar是作为长版本brew tap username/homebrew-foobar使用的一个简写.

brew可以自己添加homebrew-前缀的在需要的时候

重复名称安装包的处理

如果你想安装的一个安装包在你tap的一个仓库上,但是同时还出现在了homebrew/core上,这就意味着你必须明确指出tap的名称去安装它,否则就会默认安装homebrew/core上的包.

如果你想要是你安装的tap的优先顺序高于homebrew/core这个默认的仓库,你可以使用brew tap-pin username/repopin这个仓库.你可以使用brew-tap-unpin username/repo 恢复这个pin

当你使用brew install foo这个命令时,brew 将按照下面的顺序去查找哪个formula(tap)将被使用:

  1. pinned taps
  2. core formulae
  3. other taps

举个例子:

你想安装vim安装包,而且没有pinned某个仓库:

1
2
brew install vim # installs from homebrew/core
brew install username/repo/vim # installs from your custom repo

你想安装vim安装包,而且有pinned的仓库:

1
2
brew install vim # installs from your custom repo
brew install homebrew/core/vim # installs from homebrew/core

可以关注的Taps

alt
扫描关注,查看更多文章,提高编程能力