今天,我宣布发布 Homebrew 4.3.0。自 4.2.0 以来最重大的变化包括 SBOM 支持、初始瓶子证明验证、新的命令分析和默认自动删除卸载。
自 4.2.0 以来发生的重大变化和弃用
-
brew bottle
将在瓶子中包含一个基本 SPDX 文件 并在安装后包含一个更全面的文件。这是为了为 Homebrew 提供广泛使用的 SBOM 格式的支持。 -
如果设置了
HOMEBREW_VERIFY_ATTESTATIONS
,则brew install
将在使用 GitHub 的gh
CLI 倒出瓶子时验证瓶子工件的证明。此功能仍处于测试阶段。我们希望在将此功能设为默认行为之前,消除对gh
工具的需求并提高性能。此行为展示了 Homebrew 对改善我们的安全态势的持续承诺。在 跟踪问题 或 GitHub 工件证明公告 中阅读更多内容。 -
HOMEBREW_AUTOREMOVE
是默认行为,这意味着brew cleanup
和brew uninstall
将自动运行brew autoremove
。通过设置HOMEBREW_NO_AUTOREMOVE
来禁用此功能。这是为了改善brew uninstall
的默认行为,因为brew autoremove
足够可靠。 -
Homebrew 有两种新的分析类型:“Brew 命令运行”事件 和
brew test-bot
分析。后者尚未工作或发布,但很快就会发布。这些分析旨在帮助我们改进 Homebrew 中的文档和问题优先级。 -
Homebrew/homebrew-cask 要求对所有木桶进行代码签名。将来可能会从 Homebrew/homebrew-cask 中删除未进行代码签名的木桶。这是因为 Apple Silicon 上需要进行代码签名,而 越来越多的 Homebrew 用户 都在使用 Apple Silicon。
-
Homebrew/homebrew-autoupdate 不再是官方 tap,已移回 DomT4/homebrew-autoupdate。
-
Homebrew/homebrew-cask-versions 迁移到 Homebrew/homebrew-cask 并已存档,紧随 Homebrew/homebrew-cask-drivers。Homebrew/homebrew-cask-fonts 的迁移将很快进行。这将使所有官方木桶的安装、发现和维护体验更加一致。
-
截至 Homebrew 4.3.1:Homebrew 现在提供便携式 Ruby 3.3.1,并且要求 Ruby >=3.3.0。
自 4.2.0 以来,我想重点介绍的其他更改如下
-
HOMEBREW_FORBIDDEN_CASKS
、HOMEBREW_FORBIDDEN_FORMULAE
和HOMEBREW_FORBIDDEN_TAPS
已被添加,以扩展现有HOMEBREW_FORBIDDEN_LICENSES
的功能,以防止公式/桶/水龙头安装。 相关地,添加了HOMEBREW_ALLOWED_TAPS
以限制从特定水龙头进行安装。 -
Homebrew 在 rubydoc.brew.sh 上的代码文档以前在区分公共/私有/内部(即仅供 Homebrew 使用)API 方面做得不好。我们 明确标记非私有 API、非公共 API、警告未记录的非私有 API 并且 API 默认情况下是私有的。
-
Homebrew 在 rubydoc.brew.sh 上的代码文档 包含来自
.rbi
文件的 Sorbet 数据,以提供更多类型。 - 当 Homebrew 使用的 GitHub 令牌需要更多范围时,Homebrew 将阐明这些范围。
brew upgrade --overwrite
是一个类似于brew install --overwrite
和brew link --overwrite
的新标志,用于在链接时删除前缀中已存在的文件。brew install --display-times
也适用于桶。- 轻触迁移还可以执行重命名操作。
HOMEBREW_GITHUB_API_TOKEN
支持更多类型的 GitHub 令牌。brew desc --eval-all
警告仅适用于brew desc --search
。brew tap
不再显示具有 API 支持的未轻触轻触。brew upgrade
不再截断某些版本号。- @BrewTestBot 不再可以在 Homebrew/brew 上提供审批评论。
- 公式可以有选择地限制构建/测试/安装后沙盒中的网络访问。
HOMEBREW_TEMP
更一致地用于临时文件brew update
每当自动更新时都会输出一条消息,以明确导致延迟的原因。此外,brew update
将尝试更新所有轻触,而不仅仅是 GitHub 上的轻触。brew install
/upgrade
/outdated
在从第三方轻触指定公式/木桶时将更智能地自动更新。brew bump-formula
和brew bump-cask-pr
拒绝升级 Homebrew 的自动化已经处理的包。brew install --adopt
如果捆绑包版本匹配,则更宽松且更快。brew uninstall
和brew reinstall
将跳过木桶退出/信号指令。brew info --json=v2
在bundle_version
和bundle_short_version
键中返回木桶的捆绑包版本。brew info
和brew tap-info
提供更一致的输出,指示是否安装了包或轻触。brew *-sync
命令避免覆盖现有的用户安装。brew *-sync
命令将使用其各自的:*ENV_ROOT
变量。brew config
提供有关 Homebrew/homebrew-core 和 Homebrew/homebrew-cask 仓库和 JSON API 文件的信息。brew list
提供--installed-on-request
和--installed-as-dependency
,分别列出应要求或作为依赖项安装的配方。brew update-reset
将在适当的时候重置为stable
标记。brew bump*
命令不再允许强制多个 PR。brew bump*
命令将打开的 PR 数量限制为 15。brew bump
将指示配方是否应与其他配方同步。brew audit
将拒绝 Internet Archive Wayback Machine URL,因为这些配方不再处于活动状态。brew audit
将检查特定版本的许可证,而不是默认分支。brew update
将尝试从存储库 URL 解析 GitHub API 令牌,以更好地处理私有存储库。
最后
- 在 2024 年 AGM 之前经过成员投票后,对 Homebrew 的治理进行了合并。
- 2024 年 AGM 的会议记录现已发布。
- Homebrew 维护者不再在官方存储库上使用分支。
- Homebrew 通过 GitHub Sponsors 接受捐赠,并且 仍通过 Patreon 接受捐赠。如果您负担得起,请考虑捐赠。如果您不想使用 GitHub Sponsors 或 Patreon(我们首选的捐赠方式),请查看我们的自述文件中其他捐赠方式。
感谢我们所有勤奋的维护者、贡献者、赞助商和支持者,让我们走到今天这一步。