Homebrew 在 2026 年 6 月 11 日推出 6.0.0,是繼 5.0(2025 年 11 月)之後的一次大版本更新。到 7 月為止小版本已經迭代到 6.0.12,屬於穩定 patch 階段,是升級的好時機。

Homebrew 的基本安裝與使用可以參考 macOS Homebrew 完整教學,這篇假設 Homebrew 已經在系統上運作。

Tap Trust:第三方 tap 需要明確信任

Homebrew 的 tap 是套件公式(formula)與 cask 的來源倉庫。官方主 tap 之外,社群維護的第三方 tap 可以掛進來擴充可安裝的套件。Tap 內容是 Ruby 程式碼,`brew install` 時會直接執行,這在方便的同時也擴大了攻擊面:一旦某個 tap 被入侵或有惡意維護者,任何安裝該 tap 套件的使用者都會受影響。

6.0 的 Tap Trust 機制把這件事變成明確授權:官方 tap(例如 homebrew/core、homebrew/cask)預設信任,第三方 tap 沒有事先信任就會被略過。跟一般想像中「跳出 y/N 對話框讓使用者按確認」不同,Homebrew 6.0 是直接拒絕載入該 tap 的 Ruby 程式碼、印出警告要求手動執行 `brew trust`:

Warning: Skipping sheeki03/tap because it is not trusted.
Run `brew trust sheeki03/tap` to trust it.

信任的授權方式有幾種粒度:

  • `brew trust user/tap`:信任整個 tap 內所有 formula、cask、command
  • `brew trust –formula user/tap/foo`(或 `–cask`/`–command`):只信任 tap 內指定的項目,其他仍被封鎖
  • `brew untrust user/tap`:把先前授予的信任拿掉

Brewfile 也新增了指定信任狀態的語法,方便團隊統一管理:

tap "user/repo", trusted: true

# 只信任特定項目
tap "user/repo", trusted: {
  formula: "foo",
  cask:    "baz",
  command: "cmd",
}

`brew bundle dump` 產出 Brewfile 時也會自動幫自訂 remote 的 tap 標上 `trusted:`。對一般使用者來說,感受就是安裝某個第三方 tap 的套件時要多跑一次 `brew trust`。對 CI/自動化腳本影響比較大。

Linux 版加入 Bubblewrap 沙盒

Homebrew 在 macOS 已經有 sandbox-exec 隔離機制,Linux 這邊過去沒有等價方案。6.0 引入 Bubblewrap 當作 Linux 的沙盒實作,主要用於編譯階段隔離:避免 formula 的 build script 意外污染主機系統或存取不該存取的路徑。

開啟 Homebrew developer 模式後,這個沙盒會預設開啟。一般使用 pre-built bottle 的情況不會走到編譯路徑,即使開啟 developer 模式,也不會直接感受到 Bubblewrap 沙盒的差異。什麼是 developer 模式、怎麼開關會在下一節說明。

Ask mode 對開發者預設開啟

Ask mode 是 Homebrew 的一個安裝行為選項:啟用後,`brew install`、`brew upgrade` 等指令在真正動手之前,會先列出所有將要安裝或變動的套件(含依賴)與大約占用空間,等使用者按 y 確認才繼續。它跟 apt 的 `apt install` 那個 `Do you want to continue? [Y/n]` 是類似的機制,過去要透過 `–ask` flag 或 `HOMEBREW_ASK=1` 環境變數手動啟用。

6.0 把這個行為對 Homebrew developer 模式改成預設開啟,非開發者模式維持原本直接安裝的行為。理由是開發者比較常安裝實驗性套件或處理相依關係複雜的 formula,多一道確認能避免手滑帶進一堆額外依賴。

如果自動化腳本沒有加 `–no-ask`(短寫 `-y`,或設定 `HOMEBREW_NO_ASK=1`)就跑在有開 developer 模式的環境上,會卡在 y/N 互動提示上等使用者輸入。這是 6.0 升級後比較常見的 CI 問題。

Developer 模式的定位與開關方式

Developer 模式是 Homebrew 給 tap 維護者、formula 貢獻者、送 PR 到 homebrew-core 的人設計的一組行為切換。啟用後會多出 formula 語法檢查、audit 相關功能、更詳細的警告訊息,以及本文提到的 ask mode、Bubblewrap 沙盒等更嚴格的預設值。一般只是拿 Homebrew 裝套件的使用者不用開,也不必開。

開啟方式是設定環境變數 `HOMEBREW_DEVELOPER=1`。想長期開啟,寫進 `~/.zshrc` 或 `~/.bashrc`:

# 開啟 Homebrew developer 模式(寫進 shell 設定檔)
export HOMEBREW_DEVELOPER=1

只想暫時開啟給單次指令用,可以在指令前面直接帶環境變數:

# 只讓這一次 brew install 用 developer 模式
HOMEBREW_DEVELOPER=1 brew install some-formula

關閉方式對稱,看是永久還是暫時:把 `~/.zshrc`/`~/.bashrc` 內對應那行刪掉或註解,重新開 terminal(或 `source` 一次設定檔)即可;如果只想在當前 shell 立刻拿掉,執行 `unset HOMEBREW_DEVELOPER`。要確認目前狀態,可以用 `echo $HOMEBREW_DEVELOPER`,有值就是開啟中。

brew bundle 效能與相容性強化

`brew bundle` 是把系統上要裝的 formula、cask、Mac App Store 應用整理成一份 Brewfile 的工具,適合新機開箱一次還原環境。6.0 版本的改進包含:

  • 支援平行安裝,一份較大的 Brewfile 部署時間明顯縮短
  • 新增 npm、krew 的支援;cargo、go、uv 加入 cleanup;Windows 環境新增 winget 支援。一份 Brewfile 能描述的跨工具環境更廣
  • Tap Trust 語法整合到 Brewfile,可以在檔案裡直接標記信任狀態

macOS 27 Golden Gate 與 M5 系列支援

6.0 初步支援 macOS 27(Golden Gate)與 M5、M5 Pro、M5 Max 晶片。「初步」的意思是 CI 已經能在該平台跑通、bottle 開始產出,但覆蓋率還不會像 macOS 26/M4 那樣完整;早期升級到 macOS 27 的使用者,遇到某個 formula 沒有 27 版本的 bottle 時,會退回本機編譯。

內部 JSON API 成為預設

Homebrew 內部拉取 formula 與 cask 資料的路徑,5.x 時期還有兩套實作可切換:傳統的 Git clone 方式,以及較新的 JSON API。JSON API 體積小、更新快,過去用 `HOMEBREW_USE_INTERNAL_API` 環境變數開啟。6.0 把 JSON API 提升為預設,同時 deprecate 那個環境變數。

對一般使用者的直接影響是 `brew update` 更快、傳輸資料更少。原本靠 clone 整個 homebrew-core 倉庫拿到最新 formula 內容的自動化腳本要調整方式,改讀 JSON API 或明確 opt-in 舊行為(雖然不建議繼續依賴)。

Linux 基準拉高到 Ubuntu 24.04

Linux 版 Homebrew 的最低相容基準從 Ubuntu 22.04(glibc 2.35)拉到 Ubuntu 24.04(glibc 2.39)。較舊的發行版仍可安裝與使用,但被降級為 Tier 2 支援,不再產出對應的 bottle,套件多半要本機編譯。

影響範圍主要是還在跑 Ubuntu 22.04/Debian 11 或更早版本的伺服器與 CI runner,這些環境上安裝套件的時間會顯著拉長。

怎麼升級

一般使用者不需要特別動作,跟以往一樣:

# 更新 Homebrew 本體到最新版
brew update

# 升級所有已安裝的套件到最新版
brew upgrade

# 檢查版本,確認已在 6.0.x
brew --version

`brew update` 會把 Homebrew 本體同步到最新,等同一併把主程式從 5.x 升到 6.0。如果卡在舊版本或錯誤訊息奇怪,可以下:

# 強制把 Homebrew 本體重置到官方 main 分支
brew update-reset

# 完成後再跑一次更新
brew update

第一次要用第三方 tap 的套件時,會先看到 Tap Trust 的略過警告,依照訊息跑一次 `brew trust ` 即可。

升級後的注意事項

Intel Mac 的支援時程

Homebrew 官方公告 2026 年 9 月起 x86_64 Mac 會降到 Tier 3 支援:不再有 CI 跑測試、不再產出新的 bottle。到 2027 年 9 月則完全停止支援。這代表:Intel Mac 使用者升到 6.0 沒問題,但今年 9 月之後很多套件會退回本機編譯,安裝時間會拉長;一年後則要自行維護或改用其他方式安裝。

這是 Apple 端與工具鏈端 x86 支援全面收斂的延續,更完整的背景與其他工具的時程可以參考 macOS 對 Intel x86 支援的終結 這篇。

CI 與自動化腳本的相容性影響

Tap Trust 會擋下未信任的第三方 tap,需要載入該 tap 的指令會直接失敗退出;ask mode 則會讓 pipeline 卡在互動提示。要避免這兩個狀況:

  • 安裝套件的指令加 `–no-ask`(短寫 `-y`;或設定環境變數 `HOMEBREW_NO_ASK=1`)跳過 ask mode
  • 需要使用第三方 tap 的 pipeline,在跑 `brew install` 前先跑 `brew trust <user>/<repo>` 完成信任授權
  • Brewfile 內用新的信任語法標記第三方 tap,配合 `brew bundle install` 一次處理

–no-quarantine 已在 5.0 deprecated

過去 `brew install –cask –no-quarantine` 用來安裝 cask 時跳過 macOS Gatekeeper 的隔離屬性,這個 flag 在 5.0 已經 deprecated,6.0 沒有變動。目前還可以使用,但會顯示 deprecation warning,建議提早改走 macOS 官方的 Gatekeeper 例外設定流程,避免將來 Homebrew 真的把這個 flag 拿掉。另外 Homebrew 官方也宣佈 2026 年 9 月起,homebrew-cask 內未通過 Gatekeeper 檢查的 cask 會被 disable,對相關 cask 的使用者要提早注意。

舊環境變數與 flag 一次盤點

升級後如果看到 deprecation warning,先照著改比較安全,因為 Homebrew 通常會在下一個大版本移除:

  • `HOMEBREW_USE_INTERNAL_API`:已預設開啟,變數本身 deprecated,可移除
  • `HOMEBREW_NO_INSTALL_FROM_API=1`:仍能用來 opt-out 回舊的 git clone 行為,但不建議在自動化腳本裡繼續依賴
  • 手動 clone 的 homebrew-core、homebrew-cask 倉庫:改讀 JSON API 後這兩個 clone 不再必要,佔用數百 MB 到 1 GB 不等,可以透過 `brew untap homebrew/core homebrew/cask` 清掉

結語

Homebrew 6.0 沒有帶來使用者介面上的大幅改動,重點放在安全機制(Tap Trust、Linux 沙盒)、效能(JSON API 預設、brew bundle 平行)與平台演進(M5/macOS 27 支援、Intel 收斂)。對一般個人使用者來說升級很無痛,跟過去一樣 `brew update && brew upgrade` 即可;對維護 CI/team 環境的開發者則要花點時間更新 Brewfile 與腳本,把互動提示的部分接起來。

Intel Mac 使用者如果還沒規劃硬體升級,可以趁 9 月 Tier 3 生效前把常用套件列出來,評估未來要繼續本機編譯、還是轉用 MacPorts 或直接跳到 Apple Silicon。


Sponsored Links

發佈留言