今天很高兴宣布家酿(Homebrew)7.0.0 版本正式发布。相较于 6.0.0 版本,此次更新带来了多项显著改动,其中包括使软件包的安装与升级过程更加迅速,增强了沙盒隔离能力,推出了专为 macOS 打造的原生应用程序,加入了内置的安全漏洞扫描功能以及配套的警告公告数据库,同时不再支持 macOS 10.15 系统,并且将采用英特尔(Intel)处理器的 Mac 移至 Tier 3。
正文
7.0.0
今天,我自豪地宣布 Homebrew 7.0.0。自 6.0.0 以来最重要的变化是:更快的安装与升级、更强的沙盒、原生 macOS 应用、内置漏洞检查和公告数据库、终止 macOS 10.15 支持,以及 Intel Mac 移入 Tier 3。
⬆️ 升级
自动更新,或手动执行 brew update(如果你设置了 $HOMEBREW_NO_AUTO_UPDATE),会替你升级 Homebrew。
「现在」指 7.0.0。弃用接口会发出警告直到被禁用;已禁用的接口拒绝使用,已移除的接口不可用。
| 环境 | 7.0.0 行为与操作 | 时间 |
| --- | --- | --- |
| macOS 10.15 及更早 | 升级到 macOS 11 或更高 | 现在 |
| macOS Sonoma 14 | Tier 3;要使用 bottle 和 .pkg 安装需升级到 Sequoia 15+ | 现在 |
| Apple Silicon 上的 macOS Golden Gate 27 | 完全支持(Tier 1),提供预编译 bottle | 现在 |
| ghcr.io/homebrew/ubuntu22.04 | 镜像已移除;迁移到 ghcr.io/homebrew/brew | 现在 |
| Homebrew/actions/*@master 或 @main | master 已移除;固定到 CalVer 发行版或完整 SHA | 现在 |
| real 与 effective UID 不同的 setuid wrapper | 拒绝;以安装所有者身份运行,不使用 wrapper | 现在 |
| 第三方 brew wrapper | Tier 3;内部命令绕过 wrapper;请向 wrapper 项目寻求支持 | 现在 |
| Homebrew/brew master | 冻结为 bootstrap;在被移除前切换到 main | 2027-03-01 |
| Intel macOS 11 或更高 | Tier 3;不再有新 bottle;在 Homebrew 停止运行前迁移到 MacPorts | 2027-09-01 |
| Apple Silicon macOS 11 | 支持结束前升级到 macOS 12 或更高 | 2027-09-01 |
| 第三方 formula post_install 与 cask flight 块 | 弃用;迁移到 *_steps;brew style --fix 可转换常见钩子 | 2027-12-11 |
🍺 所有 Homebrew 用户
除非另有说明,以下改进适用于所有平台。
🏎️ 性能
下载、准备和安装的并发度更高,在协调失败与汇总信息的同时把性能拉满。
brew install、brew reinstall和brew upgrade重叠进行包准备与下载,包括brew bundle的批量操作,减少包与包之间的等待,Brewfile 也能像一次命令安装多个包那样共享安装工作。brew config并发收集彼此独立的系统信息,编译器、操作系统和仓库检查相互重叠,而不是让诊断报告逐个等待子进程。brew tap-info --installed --json=v1并发收集 tap 元数据,在多个仓库需要 Git 或网络检查时缩短清点时间,同时保持脚本期望的输出顺序。brew cleanup避免重复扫描缓存,对安装了大量包的机器加快清理。brew fetch直接从 API 元数据读取 bottle 和 cask 的下载信息,不必为了拿到 URL 和校验和而加载完整包定义。brew update预备 Ruby 缓存,让后续命令启动更快。- Homebrew 在热运行中复用已解析的 API 数据,同时每次加载都验证签名,在不放弃真实性校验的前提下减少重复包命令的准备时间。
- Homebrew 启动时启动更少的子进程,降低命令开销,并直接读取终端尺寸,避免与 uutils 的
stty一起挂起。
🔒 安全
安全公告
以下列出首批修复版本。
- GHSA-rg9r-ppxp-87hm,High,6.0.12 修复:未签名的 cask 移除元数据可借助
sudo执行命令;所有易受攻击的恢复代码和 API 访问器已被删除。 - GHSA-5263-whxq-77hp,Moderate,7.0.0 修复:恶意 cask 可通过 LaunchServices 在 macOS 安装沙盒之外执行代码;Homebrew 现在限制应用启动、Mach 服务和 Unix socket 连接。
- GHSA-hqpg-hjr9-c7j8,Moderate,6.0.12 修复:macOS 安装器会忽略 prefix 所属的 Git 配置,该配置可能以 root 身份执行程序。
- GHSA-x82f-cj53-gqfr,Low,6.0.7 修复:
brew livecheck限制重定向,防止服务端请求伪造。 - GHSA-3m5g-jfx7-3p65,Low,6.0.7 修复:下载重定向不能把秘密 header 转发给其他主机。
- GHSA-r9gp-p4vv-f93x,Low,6.0.6 修复:Git 重定向不能绕过 tap 限制。
- GHSA-9g4r-vmj2-j2gj,Low,6.0.7 修复:Subversion 外部 URL 不能变成命令选项。
- GHSA-r7qx-325v-4ccx,Low,6.0.6 修复:patch 目标不能逃出已暂存的源码树。
安装与 tap 保护
Tap trust 仍是抵御恶意第三方 cask 的主要保护;沙盒主要限制意外损害,并增加安装保障。它无法让不可信软件变得安全:应用以用户权限运行,厂商 .pkg 安装器在沙盒之外运行,且可能需要 sudo。我们在更严格的限制与保持现有软件可用之间做平衡。
- Homebrew 以签名数据形式交付结构化设置,并对 formula 和 cask 操作进行沙盒化,减少任意 Ruby 执行和重复的包加载。
- Homebrew 开始把依赖下载迁移进
fetch阶段:迁移后的 formula 在有网络访问和可写缓存的情况下下载,随后install禁用网络并将这些缓存设为只读;迁移仍在进行中。 - 默认阻止沙盒读取主目录,把无关的个人文件挡在包构建之外,同时允许必要的 Homebrew 路径;私有临时目录让构建工具在本地通信而不启用网络访问。
- Homebrew 在读取配置前拒绝 real 与 effective 用户 ID 不匹配的情况,移除不受支持的共享安装中未经测试的权限切换代码。
🔎 命令与配置
brew install --dry-run可同时预览 formula 和 cask。brew list --no-installed-on-request识别作为依赖安装的 formula。brew info用⊘区分无法安装的包、用✘区分未安装的包,并标出未满足的操作系统与架构要求,让人在开始安装前就能判断包能否在当前机器上运行。brew services从$HOMEBREW_USER_CONFIG_HOME/services/<formula>.env读取持久覆盖设置,本地服务配置可跨包升级保留,并在重启时生效,无需编辑生成的服务文件。新建和重启的服务在 macOS 与 Linux 上使用sh.brew.<formula>,旧的注册在重启前仍被识别。brew bundle从声明的来源恢复语言工具:Cargo Git 仓库或路径,以及远程uv工具的source:。brew doctor --json为自动化提供结构化诊断;brew doctor还会在PATH中有另一个brew遮蔽当前安装时发出警告,帮助诊断 wrapper 与安装冲突。brew deps --brewfile检查 Brewfile 的依赖,便于在安装某个开发环境前先看清它会引入哪些包。brew untap会先询问是否卸载该 tap 的包,让不需要的包来源和已安装软件一起移除。HOMEBREW_AUTO_UPDATE_QUIET抑制自动更新的包详情,让日常输出保持聚焦,同时仍允许 Homebrew 在后台更新。- Homebrew 不再向子进程导出自己的
BUNDLER_VERSION,formula 构建可以使用所需的 Bundler 版本。
Brewfile 会连同其他包一起记录语言工具的来源,在另一台机器上复现环境时减少额外的安装说明。
🗃️ Casks
当 formula 与 cask 提供相同命令时,formula 链接优先,并给出警告说明如何恢复 cask 链接。
brew upgrade在升级兼容应用时跳过不兼容的 cask;它和brew outdated都遵守HOMEBREW_NO_UPGRADE_AUTO_UPDATES_CASKS,保留自更新应用的退出选项。brew uninstall清除 API 中已不存在的 cask 记录,并警告可能有残留;当文件已归当前用户所有时,避免不必要的密码提示。brew link和brew unlink接受--cask/--casks与--formula/--formulae,无需重装即可禁用或恢复 cask 的二进制、manpage 和补全;--dry-run预览变更,brew link --overwrite替换冲突,--force只替换来自同一 cask 的符号链接。- Homebrew 的 API 包含 cask 语言变体,安装时可从包数据中选择合适的 URL、校验和与 artifacts,而不必为每种语言选择求值 cask 的 Ruby 定义。
🍎 macOS 用户
Homebrew 于 2026 年 9 月把 macOS Intel x86_64 移入 Tier 3,这一决定在 2025 年 8 月宣布,并在 2025 年 11 月 12 日的 5.0.0 发行说明中重申;7.0.0 还终止了 macOS 10.15。 Homebrew 在 Intel 上仍可运行到 2027 年 9 月,但没有项目支持,也不再有常规 bottle 构建。Apple 和 GitHub 对 Intel 支持的撤退,超出了 Homebrew 志愿者所能弥补的范围。
brew services run应用每服务环境覆盖而不注册登录服务,让临时运行与永久注册的服务使用相同配置。brew shellenv直接设置PATH,避免 macOSpath_helper子进程和配置文件写入。- Homebrew 把 Intel 移入 Tier 3:已有 bottle 保留,但更新后的 formula 可能需要在本地从源码构建,因为不可靠的基础设施使常规 Intel bottle 更新终止。
- Homebrew 的
.pkg安装器仅支持 Apple Silicon,并要求 macOS Sequoia 15 或更高;MacPorts 可能为 Intel 用户提供更好的二进制包覆盖。 - Homebrew 安装预编译 cask 时不再需要 Xcode Command Line Tools,应用安装少了一个编译器依赖。
- Homebrew 完全支持 macOS Golden Gate 27,此前已完成 bottle 推送;Sequoia 15、Tahoe 26 和 Golden Gate 27 在 Apple Silicon 上属于 Tier 1。
- Homebrew 允许在 macOS 沙盒内编译 Metal 着色器,ggml 和 whisper.cpp 的测试可在无网络访问的情况下使用 GPU 加速。
| 接口或平台 | 7.0.0 状态 | 时间 | 替代方案 | | --- | --- | --- | --- | | macOS Catalina 10.15 及更早 | 已移除 | 现在 | 升级到 macOS Big Sur 11 或更高。 | | Intel macOS | Tier 3;不再有新 bottle | 现在 | Apple Silicon 或 MacPorts。 | | macOS Sonoma 14 | Tier 3;不再有新 bottle | 现在 | macOS Sequoia 15 或更高。 | | Apple Silicon 上的 macOS Golden Gate 27 | 支持;Tier 1 | 现在 | 无需迁移;提供预编译 bottle。 | | 在 Intel Mac 上运行 Homebrew | 即将移除 | 2027-09-01 | Apple Silicon 或其他包管理器。 | | Apple Silicon 上的 macOS Big Sur 11 | 即将移除 | 2027-09-01 | macOS Monterey 12 或更高。 |
🖥️ Homebrew 应用
BrewUI 是 Homebrew 面向 macOS 的官方图形界面,已正式发布,通过原生应用让包管理更易上手。

brew install homebrew-app在 macOS Tahoe 26 或更高版本上安装 BrewUI。- BrewUI 把包浏览、搜索和已安装版本详情集中在一个窗口,更容易探索可用软件、查看现有安装。
- BrewUI 显示包操作对应的底层
brew命令,让工作可见,并把图形操作与熟悉的终端命令联系起来。
🐧 Linux 用户
Homebrew 6.0.0 引入了 Bubblewrap 沙盒。7.0.0 用 Landlock 取代它,无需依赖,也不需要更高的 Docker 权限——这正是 Bubblewrap 带来的安装问题。
7.0.0 状态: 没有 Landlock 的内核继续以 6.0.0 之前较不安全的配置运行,不使用 Linux 沙盒;brew doctor 会把缺失的保护作为建议报告。
brew config报告 Landlock ABI,便于排查问题。- Homebrew 在 Linux 6.1 上支持 Landlock ABI 2,当内核无法执行网络限制时发出警告。
- Homebrew 把 AppImage 放到应用目标位置,与 macOS
.app的安装方式一致,不再使用带版本号的符号链接,因此自更新会保留启动器。
| 接口或平台 | 7.0.0 状态 | 时间 | 替代方案 |
| --- | --- | --- | --- |
| HOMEBREW_SANDBOX_LINUX | 已禁用 | 现在 | 移除它;可用时自动使用 Landlock。 |
| HOMEBREW_NO_SANDBOX_LINUX | 已弃用 | 2027-12-11 | 没有替代的退出选项;Landlock 不可用时仍只是建议。 |
| HOMEBREW_ARCH | 已弃用 | 2027-12-11 | 默认使用本机 CPU 优化。 |
🍾 非默认 prefix 用户
Homebrew 把兼容的 bottle 重定位到更短的 prefix,避免在默认安装位置之外进行源码构建。
7.0.0 状态: 限制是 Apple Silicon macOS 上 13 字节、Linux 上 26 字节,现有 Intel macOS bottle 为 10 字节。这些数字计入完整路径(包括斜杠);Cellar 也必须符合其构建时的长度。标记为 :any 或 :any_skip_relocation 的 bottle 可重定位到任意 prefix。
- Homebrew 重定位 prefix 符号链接,使其在其他位置仍可用。
- Homebrew 在构建时记录重定位元数据,减少重复的安装扫描,安装时应用已记录的更改,而不是在每台机器上重新发现每个内嵌路径。
即将推出: 带填充的构建旨在让每个 bottle 及其依赖都能重定位到 Apple Silicon macOS 和两种 Linux 架构上最多 64 字节的 prefix。这最终可能在这些限制内实现完整支持;非默认 prefix 目前仍不受支持,也没有推出日期。
🔍 安全团队与审计者
Homebrew 新的公告数据库记录 Homebrew 所发布 formula 版本与修订中的漏洞,包括向后移植的安全修复。brew vulns 已内置,使用 OSV.dev 检查已知漏洞,无需额外的 tap 或 gem。
brew vulns扫描已安装的 formula 并报告跳过的不受信任 tap,可用--severity=high、--deps和--brewfile做针对性检查。它通过--fix-available和--no-fix-available安排修复优先级,用--fix-type区分已发布修复与补丁修复,用--list-skipped查看覆盖缺口。- Homebrew 在 formula API 中发布公告发现结果,并提供可下载的公告索引,帮助其他工具区分尚未修复的漏洞与已发布的修复。数据库的 OSV 格式记录以 CC0 自由复用,为安全团队提供 Homebrew 专属漏洞数据的共享来源。
- Homebrew 识别带
resolves标注的安全补丁,避免为已包含修复的包报告漏洞。 - Homebrew 在软件物料清单中加入上游包标识符,让外部工具把源码归档与 PyPI、npm、Cargo 等注册表关联起来,而不只依赖 Homebrew formula 名称。
- Homebrew 验证受支持的第三方 tap bottle 的 attestation,在 tap 发布所需 attestation 时,把构建来源检查扩展到
homebrew/core之外。
🐳 在 CI 中使用 Homebrew 的用户
Homebrew 镜像和 GitHub Actions 提供维护中的迁移目标。
brew test-bot --build-dependents-from-source把每个 formula 每个分片的源码构建依赖限制为十个,优先覆盖热门包,在保持 CI 运行时间可控的同时扩大 Linux 源码构建覆盖。- Homebrew 在 GitHub 的
xcode-27runner 上运行常规 Golden Gate 依赖测试,减少对自托管基础设施的依赖。 - Homebrew 退役 Ubuntu 22.04 镜像;改用下面维护中的通用镜像。
- Homebrew 的带版本 action 会固定内部依赖,让工作流升级可审查;把
@main和已移除的@master引用迁移到发行版或完整 SHA。 - Homebrew 在 Ruby 工作流中使用
Homebrew/actions/setup-ruby与portable-ruby: true,让 CI 任务选择与 Homebrew 相同的解释器,而不依赖内部 Ruby 入口。
| 接口或平台 | 7.0.0 状态 | 时间 | 替代方案 |
| --- | --- | --- | --- |
| ghcr.io/homebrew/ubuntu22.04 | 已移除 | 现在 | ghcr.io/homebrew/brew。 |
| Homebrew/actions/*@master | 已移除 | 现在 | CalVer 发行版或完整 SHA;不会重定向。 |
| Homebrew/actions/*@main | 建议迁移 | 现在 | CalVer 发行版或完整 SHA。 |
🛠️ Tap 维护者
创作工具减少手工设置,鼓励更安全的包定义。
brew audit --cask --online --fix修正 macOS 要求和应用名大小写;brew audit --strict检测已安装的homebrew/coreformula 中下载的预编译 npm 可执行文件,帮助维护者执行源码构建要求。brew style --fix合并平台特定的 cask 校验和并排序依赖,简化跨平台定义;brew style还拒绝宽泛的com.install4j.*卸载和 zap 模式,避免影响无关应用。brew tap-new为新 tap 生成自动更新工作流,按计划检查上游版本并开启 PR,让维护者无需手动检查每个 formula。它还默认生成带 attestation 的 bottle 发布工作流,用--no-attestations退出,帮助新 tap 发布 Homebrew 可在用户安装 bottle 时验证的来源信息。brew bump-cask-pr可从架构特定的更新结果生成分开的 Intel 与 Apple Silicon 版本 stanza,让维护者跟上为各架构发布不同版本的上游应用,而不必手动改写支持的根级定义。brew bump-formula-pr更新版本为 commit hash 的 Git 资源,让没有发布标签的项目同时保持版本与固定修订一致。brew create生成语法有效的 formula 模板,并为 Go 和 Rust 分开 fetch 与离线构建阶段,防止编译期间下载。brew update-python-resources --ignore-main-package-cooldown只绕过第三方 formula 中主包的 cooldown。brew benchmark分别测量冷启动与热启动的安装/获取工作负载,--runs=控制重复次数,--exec支持自定义 Hyperfine 命令,贡献者可以判断某项改动改善的是全新下载、缓存安装还是命令开销,而不是依赖一个合并后的计时。brew bump-compatibility-version记录需要重建依赖的更改。brew formula-python-resources --all/--tap=清点 Python 资源,brew bump-python-resources-pr --packages=开启安全更新,-n/--dry-run、--install-dependencies、--no-fork、--branch=、--message=和--output=支持自动化。- Homebrew formula 使用
python3选择直接的 Python 依赖,不再硬编码解释器路径。 - Homebrew formula 可为服务声明
stop_timeout,让数据库等有状态应用在服务管理器终止前有更长时间优雅关闭;stop_timeout 60在 macOS 和 Linux 上都设置一分钟的允许时间。 - Homebrew 的
python_major_minor_versionhelper 提供所选 Python 版本,避免在需要带版本路径或参数的 formula 定义中重复版本检测代码。 - Homebrew 的
std_go_args(ldflags: :goreleaser)提供常见的 GoReleaser 构建元数据,包括版本、commit 和构建日期,帮助上游应用从 Homebrew 构建中报告有用的版本信息,而不必每个 formula 自己重建这些链接器参数。 - Homebrew formula 和 cask 可用
homepage ..., browsed: "YYYY-MM-DD"记录人工首页检查,当网站在浏览器中可用但阻止自动请求时,暂停自动可用性检查一年,同时确保人工检查有到期时间。 - Homebrew 服务可以使用共享的包路径 helper,让服务定义一致地引用包位置,而不必在命令与环境设置之间重复路径构造。
🪜 安装步骤
formula 的 post_install 和 cask 的 *flight Ruby 块已弃用,改为声明的 *_steps。显式操作和路径允许校验、沙盒化和签名 API 交付,让设置更安全,并避免重复的包求值。
7.0.0 状态: 官方 tap 拒绝旧式钩子;第三方 tap 在 2027 年 12 月 11 日前收到警告。
brew style --fix转换常见钩子;手动迁移需要把块的内容改写为声明的步骤,参见 Formula Cookbook 或 Cask Cookbook。- Homebrew 提供结构化的文件操作与配置写入,保留常见设置而不使用任意 Ruby;formula 作者描述预期操作和目标,Homebrew 统一处理校验与执行。
- Homebrew 在执行前校验序列化的步骤,为包作者提供一组明确定义的支持操作,并让通过 API 交付的设置遵循与本地加载定义相同的规则。
| 接口或平台 | 7.0.0 状态 | 时间 | 替代方案 |
| --- | --- | --- | --- |
| Formula post_install | 已弃用 | 2027-12-11 | post_install_steps |
| Cask preflight | 已弃用 | 2027-12-11 | preflight_steps |
| Cask postflight | 已弃用 | 2027-12-11 | postflight_steps |
| Cask uninstall_preflight | 已弃用 | 2027-12-11 | uninstall_preflight_steps |
| Cask uninstall_postflight | 已弃用 | 2027-12-11 | uninstall_postflight_steps |
🙏 最后
- Intel 支持决定反映了志愿者项目的局限:Apple 已从 macOS 27 Golden Gate 中移除 Intel
x86_64支持,GitHub Actions 将在 2027 年秋季退役 Intel macOS runner。如果 Apple 和微软旗下的 GitHub 这两家全球最大的科技公司都无法继续支持 macOS Intelx86_64,Homebrew 也无法做到。MacPorts 仍支持 macOS Intelx86_64,在该平台上可能有更好表现。 - 截至撰稿时,Homebrew/brew 仍然没有未解决的 issue。
评论
讨论整体以祝贺和感谢为主,Homebrew 7.0 带来的提速、沙箱和新 GUI 被普遍认可;分歧集中在两处:把 Intel Mac 降为 Tier 3 是否等于抛弃老用户,以及 Homebrew 的供应链安全模型是否值得信任。
感谢维护者多年付出,升级体验依然顺滑
- 不少老用户表达情感上的认同,称 Homebrew 多年来一直是自己日常环境的基础,希望项目不要停下(较多人)
- 也有人把它当作例行操作:顺手跑一遍更新升级,虽然每次略紧张,但过程基本无痛(较多人) > 谢谢你做的这一切,这么多年你让我感觉像在家,或者像回到了 2010 年。(@yard2010)
对 Intel Mac 被降为 Tier 3 感到被抛弃
- 这一条是情绪最集中的反对声:老机器跟不上节奏,只能退回旧安装方式或干脆停用(较多人)
- 有人以「告别」的口吻表态,把机型和使用年限当作身份标签(少数人) > 对我来说,作为用户的 Homebrew 到此为止了;我喜欢这个工具,但我那台老 Intel MacBook 显然已经带不动它。(@basedpolymer)
供应链安全基本靠自觉,不该靠近生产环境
- 该观点认为项目的安全策略为低门槛贡献做了优化,没有强制签名、审查签名或发布多方签名,整套流程建立在信任之上(少数人)
- 类比维基百科式的开放协作:人人都能改,出了问题无从追溯,因此不应装在任何需要可信的机器上,更不该用于审查要上生产的代码(少数人) > brew 的安全策略基本不存在,它是为低摩擦贡献优化的,想想维基百科就明白了。(@lrvick)
Linux 上仍需 root 和专用账户是个劝退点
- 有人直接询问该限制是否仍然存在,并表示正是这一点让自己一直没上车(少数人) > Linux 上安装还是需要 root 和一个专用用户账户吗?这真的很劝退。(@roger_)
已经转向 Mise 这类更专注的开发环境工具
- 该观点认为 Mise 覆盖了自己的全部需求,而且作用域受控,装新东西时不会顺手升级 Python 进而搞坏所有虚拟环境(少数人) > 我发现 Mise 能满足我的全部需求,它作用域受限,装新东西时不会把 Python 升级掉、连带搞坏我所有虚拟环境。(@Sytten)
有价值的补充
- 7.0.0 的主要变化是安装与升级更快、沙箱更强、提供原生 macOS app、内置漏洞检查与 advisory 数据库;同时终止 macOS 10.15 支持,Intel Mac 转入 Tier 3(去年已预告)。
- 新增的图形界面管理器可通过
brew install homebrew-app安装。 - 有人分享了自己的日常更新别名:
brew update && brew upgrade --greedy -y && brew upgrade --cask -y && brew cleanup,适合想一条命令跑完全流程的人。