1.3 Formula、Cask 与 Tap 是什么
2 分钟阅读
原文链接: https://brew.sh/
Homebrew 的软件包分为 formula(配方)和 cask(木桶)两大类,而 tap(水龙头)则是软件包来源仓库的统称。把它们区分清楚,命令就不会用错。
Formula:命令行软件
formula 是从上游源代码构建命令行工具、库和服务的包定义。当你执行
| |
时,brew 会读取 git 这个 formula,默认优先下载官方预编译的 bottle(瓶装二进制),没有 bottle 时才从源码编译。
官方仓库 homebrew/core 中的 formula 在被接受、修改或更新前都需要人工审查,并且必须是开源、许可证符合 Debian Free Software Guidelines 要求的软件。它们由 Homebrew 的维护者和贡献者共同维护。如果你想了解自己动手编写 formula,官方 Formula Cookbook 是最佳起点。
Tap:第三方仓库
除了官方仓库,任何人都可以维护自己的软件包仓库,这类仓库称为 tap。tap 让个人或团队在官方支持范围之外维护自己的 formula 和 cask。使用非官方 tap 之前,务必先阅读官方的 Tap 信任模型(教程中的详细说明见 3.4 Tap 与信任)。
Cask:桌面应用
cask 安装的是上游已经编译好、打包并签名的二进制,例如图形应用、字体和插件:
| |
安装 cask 时 brew 不会从源码构建,而是把发行方提供的 .app、.pkg 等文件放进 Caskroom,再复制或链接到 /Applications 等位置。
有些 cask 应用会在 Homebrew 之外自行更新,因此如果你想用 brew 一并更新它们,需要:
| |
官方 homebrew/cask 仓库中的 cask 同样需要人工审查,且必须满足 Acceptable Casks 中的要求。Cask 的详细使用见 第 5 章。
Bottle:为什么安装通常很快
formula 从源码编译可能耗时很长。为此,Homebrew 为大量 formula 提供预编译的 bottle。只要满足条件(例如安装在默认 prefix、系统版本受支持),brew 会优先“倒入”bottle 而不是现场编译。默认前缀对能否使用 bottle 至关重要,具体原理见 3.1 默认前缀与 bottle。
小结
| 概念 | 安装什么 | 典型命令 |
|---|---|---|
| formula | 命令行工具、库、服务(源码或 bottle) | brew install git |
| cask | 桌面应用、字体、插件 | brew install --cask firefox |
| tap | 一个额外的软件来源仓库 | brew tap user/repo |