homebrew/core 使用特殊命名格式支持公式的多版本。例如,GCC 6 的公式命名为 [email protected]
,并以 class GccAT6 < Formula
开头。
我们在 homebrew/core 中包含的版本化公式必须符合以下标准
formula2
,而不是 formula@2
或 formula@1
)。[email protected]
和 foo
,而 foo
依赖于 openssl
,那么你必须改用 openssl
。keg_only :versioned_formula
允许用户一次安装多个版本。keg_only :versioned_formula
不应在 HOMEBREW_PREFIX
中 post_install
任何与主对应版本(或其他版本化公式)冲突或重复的内容。例如,node@6
公式不应将其 npm
安装到 HOMEBREW_PREFIX
中,就像 node
公式所做的那样。install_on_request
配方。resource
。例如,node@6
配方不应具有 npm
资源,而应依赖上游 tarball 提供的 npm
。revision
升级才能针对较新版本进行重新构建。违反此规则的版本更新应被拒绝,从那时起该配方应被弃用。Homebrew 的版本不应用于将配方“固定”到您的个人需求。相反,您应该 创建您自己的 tap 以控制您或您的组织希望控制其版本的配方,或不符合上述标准的配方。定期发布 API 或 ABI 破坏性版本的软件仍需要满足上述所有要求;brew upgrade
为您破坏了某些内容并不是我们为您添加和维护配方的理由。
如果 Homebrew/homebrew-core 存储库中当前存在或过去存在过某个公式(即已迁移或删除),则可以使用 brew extract
命令将其恢复以供自己使用。这会将所需版本的公式复制到自定义 tap 中。例如,如果你的项目依赖于 automake
1.12 而不是最新版本,则可以通过运行以下命令来获取版本 1.12 的 automake
公式
brew extract automake --version=1.12 <YOUR_GITHUB_USER>/<YOUR_TAP_REPOSITORY_NAME>
通过这种方式获取的公式可能包含已弃用、已禁用或已删除的 Homebrew 语法(例如,校验和可能是 sha1
而不是 sha256
);brew extract
命令不会编辑或更新公式以满足当前标准和样式要求。
我们可能会暂时在 homebrew/core 中添加不满足这些标准的版本化公式以满足我们自己的需求。那里存在版本化公式并不意味着它会无限期地得到维护,或者我们愿意接受任何不满足上述要求的其他版本。