Synth Daily

Homebrew 7.0.0 发布

Homebrew 7.0.0 版本带来了显著的性能和安全升级。核心亮点包括更快的安装和更新速度、通过 Landlock(Linux)和增强规则(macOS)实现的更强沙盒机制、一个全新的原生 macOS 图形界面应用 BrewUI,以及内置的漏洞扫描命令 brew vulns。此版本也标志着重要的支持策略调整:正式停止对 macOS 10.15 (Catalina) 的支持,并计划将 Intel Mac 降级为 Tier 3 支持,这意味着未来将不再为 Intel Mac 提供预编译的二进制包。

性能提升

通过在下载、准备和安装阶段实现更高程度的并发处理,新版本显著提升了性能,缩短了用户等待时间。

  • 更快的安装与升级: brew install, brew reinstallbrew upgrade 等命令现在可以重叠处理软件包的准备和下载过程,减少了软件包之间的等待。
  • 优化的信息收集: brew configbrew tap-info 等命令现在可以并发收集系统信息,从而加快了诊断报告和元数据检查的速度。
  • 高效的缓存利用: brew cleanup 避免了重复的缓存扫描,而 brew fetch 直接从 API 读取下载信息,无需加载完整的包定义,从而加快了启动速度。

安全性增强

此版本包含多项安全修复和新的安装保护措施,旨在限制意外损害并增加安装过程的安全性。

  • 内置漏洞扫描: 新增 brew vulns 命令,它使用 OSV.dev 的数据来扫描已安装的软件包,检查已知的安全漏洞。用户可以按严重性、是否有可用修复等条件进行筛选。
  • 更强的沙盒机制:
    • Linux 上,用 Landlock 取代了原有的 Bubblewrap,无需额外依赖或提升权限,解决了之前的安装难题。
    • macOS 上,收紧了沙盒策略,限制了对 Mach 服务和 Unix 套接字的连接,并默认阻止沙盒内对用户主目录的读取。
  • 安装和 Tap 保护: Tap(第三方仓库)的信任仍然是抵御恶意软件的主要防线。沙盒机制主要用于限制意外损害,但无法使不受信任的软件变得安全

值得注意的是,应用程序最终仍以用户权限执行,而供应商的 .pkg 安装程序在沙盒之外运行,并可能需要 sudo 权限。

主要命令和配置更新

多个命令的功能得到增强,提供了更清晰的预览和信息。

  • brew install --dry-run 现在可以同时预览 formulae 和 casks 的安装过程。
  • brew info 能更清晰地区分无法安装 (⊘)未安装 (✘) 的包,并标出不满足的系统或架构要求。
  • brew services 现在可以从 $HOMEBREW_USER_CONFIG_HOME/services/.env 文件中读取持久化配置,使本地服务设置在软件包升级后依然生效。
  • brew deps --brewfile 可以检查一个 Brewfile 的依赖关系,便于在安装前审查将要引入的所有软件包。

适用于 macOS 用户

  • 原生 macOS 应用 (BrewUI): Homebrew 推出了官方图形界面应用 BrewUI,让软件包管理更加直观。用户可以通过 brew install homebrew-app 来安装(需要 macOS Tahoe 26 或更高版本)。
  • Intel Mac 支持策略变更:
    • Homebrew 将 Intel Mac 的支持级别降至 Tier 3。这意味着现有的二进制包(bottles)仍然可用,但更新的软件包可能需要从源码编译。
    • 官方的 .pkg 安装程序现在仅支持 Apple Silicon。
    • 建议 Intel 用户考虑使用 MacPorts,它可能在 Intel 平台上提供更好的二进制包支持。
  • 系统版本支持调整:
    • 已移除 对 macOS 10.15 (Catalina) 及更早版本的支持。
    • macOS 14 (Sonoma) 也已降级为 Tier 3,不再提供新的二进制包。建议用户升级到 Sequoia 15 或更高版本以获得完整支持。

“如果苹果和微软的 GitHub 这两家全球最大的科技公司都无法继续支持 macOS Intel x86_64,那么遗憾的是,Homebrew 也无法做到。这是一个由志愿者运营的项目,我们的能力是有限的。”

面向维护者和贡献者

  • 弃用安装钩子: post_install (formula) 和 *flight (cask) 等 Ruby 代码块已被弃用,推荐迁移到声明式的 *_steps。这一改变增强了安全性、验证和 API 交付能力。brew style --fix 可以自动转换常见的钩子。
  • 新的辅助工具: 引入了多个新的 brew 命令和辅助函数,以简化软件包的创建、审计和更新流程,例如 brew tap-new 可以生成自动更新工作流,brew create 能生成语法正确的模板。