Homebrew 6.0.0 發佈說明 / 有什麼新功能

Homebrew 6.0.0 是一次重大更新,重點在於安全性強化、效能優化以及擴展跨平台支援。此版本引入了針對第三方 tap 的強制信任機制、預設使用更快的內部 JSON API,以及為 Linux 安裝提供沙盒機制,使其與 macOS 的體驗保持一致。

安全性強化與 Tap 信任

Homebrew 6.0.0 實作了新的 tap 信任機制,以降低執行來自第三方 tap 的任意、未經沙盒保護的 Ruby 程式碼之風險。第三方 tap 以及與其相關的所有 formulae 或 casks,現在必須由使用者明確信任,才能進行程式碼評估或執行。官方 Homebrew taps 預設仍保持信任狀態。

信任模型的關鍵更新包括:

  • 強制信任:在進行任何程式碼執行之前,未經信任的 taps 會被標記。
  • 管理指令brew tap 現在包含管理信任的指令,使用者可以透過其遠端 URL 來信任 taps。
  • Bundle 集成brew bundle 現在支援 trusted: 選項,且 brew bundle dump 會記錄已信任的項目。
  • 安全性漏洞通知:此版本解決了三個關鍵的安全漏洞,包括 HTTPS-to-HTTP 重定向保護的繞過 (GHSA-7699-qf8c-q47m)、透過 macOS .pkg postinstall 中的 Git hooks 執行 root 權限程式碼 (GHSA-6689-q779-c33m),以及透過 /var/tmp plist 進行本地攻擊者所有權分配 (GHSA-59v8-x8q4-px5c)。

效能與 API 改進

內部 JSON API 現在已成為預設值,取代了先前的 opt-in 系統。此 API 將 Homebrew 的元數據整合到單次下載中,減少了網路請求並加速了 brew update 的過程。HOMEBREW_USE_INTERNAL_API 環境變數現在已棄用。

一般的效能提升包括:

  • 啟動速度:對 Ruby 函式庫載入與一般啟動效能進行了微調。
  • 指令碼優化brew leaves 的速度提升了約 30%。
  • 升級效率:在升級期間並行化 bottle 的標籤獲取過程。

Linux 沙盒化與跨平台支援

為了使 Linux 與 macOS 一致,Homebrew 6.0.0 引入了 Linux Bubblewrap 沙盒。這確保了 build、test 與 postinstall 階段會在沙盒環境中執行。此功能對開發者預設是啟用的。

除了沙盒化之外,此更新也擴展了作業系統支援:

  • macOS 27 (Golden Gate):已為即將推出的 macOS 版本加入初步支援。
  • Windows/WSLbrew bundle 現在支援 Windows 上的 winget,且 WSL 分析數據現在已標記,以便進行更好的追蹤。
  • Linux Casks:為 Linux 上的 casks 加入了 AppImage 支援以及 freedesktop 垃圾桶實作。

開發者體驗與 brew bundle

根據使用者調查,Homebrew 已將其預設值更新為對開發者更友善的設定。一個顯著的變化是 ask 模式現在是開發者的預設值,這意味著 brew installbrew upgrade 現在會顯示依賴關係摘要,並在繼續之前需要使用者確認。

brew bundle 的改進包括:

  • 並行安裝:Formulae 的安裝現在預設會自動在背景執行並行任務。
  • 擴展支援:為 npmkrewcargogouv 加入了更廣泛的清理支援。
  • Windows 集成:為 Windows 使用者加入了 winget 支援。

新指令碼工具

  • brew exec:一個與 npx 類似的新指令,支援 formulae 環境。

  • brew vulns:一個新的 tap 與子指令,用於檢查已安裝套件的已知安全性漏洞。

  • brew as-console-user:一個新指令,專為在 MDM 或 root 環境下執行 Homebrew 而設計。

未來發展藍圖與棄用事項

Intel macOS 支援

由於 macOS 27 (Golden Gate) 將停止支援 Intel 處理器,Homebrew 將調整其支援層級:

  • September 2026:macOS Intel x86_64 將移至 Tier 3 (不提供 CI 支援,不提供新的 binary bottles)。

  • September 2027:macOS Intel x86_64 將完全不再受支援,且相關程式碼將被刪除。

其他變更

  • mastermain 遷移:預設分支的遷移工作持續進行中,GitHub Actions 現在會警告使用者將 @master@main 遷移過來。

  • brew-rs 實驗計畫:將 Ruby frontend 遷移至 Rust 的實驗計畫已結束。基準測試顯示 Rust 僅在特定的、快取過的 bottle 獲取過程中有增益益處,而非在具代表性的完整安裝過程中。效能優化重點已回歸至 Ruby。

  • Install Steps Framework:一個新的框架,將常見的 postinstall 與 preflight 行為表現為宣告式 DSL 資料,減少了在安裝時評估 Ruby 檔案的需求。

社群意圖

雖然此版本廣受讚譽,因其效能與安全性強化,但社群中有些使用者表達了對更好的版本鎖定 (version pinning) 與原生支援多個相同套件的版本 (例如:Node, Python, PHP) 的需求,並指出他們使用 misepyenv 等工具來避免因強制升級而導致的「意外破壞性變更」。

Sources