某些 cask 不应放入 homebrew/cask。但是还有其他 有趣的 Tap 和 Fork,任何人都可以 开始自己的 Tap!
我们为不同类型的二进制文件维护独立的 Tap。我们的命名规则是
稳定版本位于 Homebrew/homebrew-cask 的主仓库中。它们应该在最新版本的 macOS 或之前的点版本(截至 2022 年底为 Monterey 和 Ventura)上运行。
这些版本也位于 Homebrew/homebrew-cask 的主仓库中。文件名和令牌应包含 @beta
、@nightly
等,以将它们与稳定版本区分开来。
当一个应用程序存在于多种语言中或有不同的区域版本时,应使用 language
节来在语言或区域之间切换。
在提交试用版之前,请确保它可以制作成无需重新下载的完整工作版本。如果一个应用程序提供试用版,但购买完整版的唯一途径是通过 Mac App Store,则它不属于任何官方仓库。免费增值版本是可以的。
分支必须在木桶的文件名和令牌上以供应商的名称作为前缀。如果原始软件已停产,分支仍然需要遵循此规则,以免让用户感到惊讶。有两个例外允许分支替换主木桶
对于共享名称的不相关应用程序,最受欢迎的一个(通常是已经存在的那个)保持无前缀。由于这可能具有主观性,因此如果你不同意某个决定,请打开一个问题并向维护人员说明你的情况。
我们不接受这些木桶,因为它们涉及高于正常水平的安全风险。
字体木桶位于 Homebrew/homebrew-cask-fonts 仓库中。有关详细信息,请参阅 homebrew/cask-fonts
仓库 CONTRIBUTING.md。
不幸的是,在软件世界中,有一些不良行为者将恶意软件与他们的应用程序捆绑在一起。即便如此,Homebrew Cask 早已决定它不会成为一个主动的守门人(macOS 已经有一个),并且用户应该了解他们正在安装的软件。这意味着我们不会总是删除链接到这些应用程序的木桶,部分原因是没有明确的界限来区分有用的应用程序、潜在不需要的程序以及不同类型的恶意软件——对一个用户有用的东西可能被另一个用户视为恶意。
但我们仍然希望用户在最大程度减少合法开发人员被标记为恶意软件携带者的事件发生的同时享受某种保护。为此,我们逐案评估木桶,任何用户都可以向我们提出潜在的恶意软件案例。但是,重要的是永远不要忘记最后一道防线始终是用户。
如果捆绑恶意软件的应用程序未经 Apple 开发者 ID 签名,并且您故意禁用或绕过 Gatekeeper,我们不会采取任何行动。当您禁用安全功能时,您将自行承担风险。但是,如果捆绑恶意软件的应用程序已签名,Apple 可以撤销其权限,它将不再在保持安全功能的用户计算机上运行——我们所有人都会受益,无论是否是 Homebrew Cask 用户。要举报捆绑恶意软件的已签名应用程序,请使用Apple 反馈助手。
我们也愿意删除我们认为有足够证据表明该应用程序是恶意的木桶。要建议删除木桶,请提交一个拉取请求以将其删除,并附上您的理由。通常,这意味着提供VirusTotal的应用程序扫描,显示它是恶意的,最好还有一些其他报告表明它不是误报。
同样,提供“干净”和受恶意软件感染的版本的软件也可能会从存储库中删除;即使我们可以访问好的版本——如果其开发人员推动用户安装坏的版本。我们这样做是因为在这些情况下,两个版本都存在(或很快会)以某种方式受到损害的风险高于正常情况。
如果您依赖的酒桶因这些规则而被移除,请不要担心。从官方存储库中移除酒桶意味着我们不会支持它,但您可以通过托管您自己的水龙头来支持它。
未达到最低知名度阈值的酒桶(请参阅已拒绝的酒桶)不会被主存储库接受,因为增加的维护负担不符合它们可能获得的较差使用率。此知名度检查由我们提供的审计命令自动执行,但其决策并不是一成不变的。如果酒桶未通过知名度检查,则可以添加它,如果它
请注意,这些例外情况都不能保证包含在内,但它们是我们可能重新考虑的情况的示例。
我们不会使用分支添加新酒桶,除非满足以下至少一项条件
该分支仍应满足所有其他可接受的酒桶要求(包括例如流行度和自我提交的要求)。
替换原始 cask 的 fork 的替代方案是新 cask。例如,如果 MikeMcQuaid
fork 了 google-chrome
并且它非常流行:一个 mikemcquaid-google-chrome
cask 可能有意义。
自 Homebrew Cask 诞生以来,各种请求都归属于此回复的范畴。虽然这是一个颇受欢迎的请求,但经过多次仔细考虑,我们始终得出相同的结论:我们不是一个可发现性服务,并且我们希望我们的用户在通过我们安装应用程序之前对他们要安装的应用程序有合理的了解。例如,按类别对 cask 进行分组 不在该项目的范围内。
除其他事项外,此类请求的后勤工作对于 Homebrew Cask 来说是不可持续的。在提出此类请求之前,您必须通读以前的相关问题,以及它们链接到的任何其他问题,以全面了解为什么会出现这种情况,以及为什么“但项目x 做y”论点不适用,以及为什么并非每个包管理器都是相同的。
您还应该能够针对这些问题提出明确的可行性修复方案。仅仅提出要求而没有解决方案,您的问题将被关闭。
但是,可发现性(找到您不知道的新应用程序)和可搜索性(识别您了解并想要安装的应用程序)之间存在差异。虽然前者不太可能成为我们目标的一部分,但后者对我们来说确实很重要,并且我们仍在继续努力。
在向我们的任何存储库提交 cask 之前,您必须阅读我们的关于可接受 cask 的文档并执行(至少快速)搜索,以查看是否有任何以前尝试引入它的尝试。
完全拒绝 cask 的常见原因
pkg
,它需要 allow_untrusted: true
。brew install
将是安装软件的唯一途径,这意味着用户无法轻松验证其真实性。
soapui
,其安装问题在两个 后续 提交 中并未得到解决。binary
工件)。在这种情况下,并且 本着去重精神,首先将其作为从源代码构建的公式提交到 homebrew/core。如果它被拒绝,您可以在 cask 中再次尝试(从您的拉取请求链接到该问题,以便我们可以看到讨论和拒绝理由)。gedit
。从主 homebrew/cask
存储库拒绝 cask 的常见原因
遵循上述准则,您的提交将有很大的机会被接受。但请记住,文档往往落后于当前的决策,我们无法预测每种情况。当经验告诉我们这将带来更好的整体 Homebrew 时,维护人员可能会推翻这些规则。