如何在 Mac 清除 Homebrew 快取與舊版本
AskClean 團隊 · 更新於 2026-08-05
先用 brew --cache 找出 Homebrew 下載快取,再執行 brew cleanup -n 預覽。一般 brew cleanup 會移除過期下載、陳舊鎖定檔與舊 formula 版本;brew cleanup --prune=all 會不分檔案年齡清除快取。不要手動刪除目前安裝的軟體、設定或使用者資料。

下載快取、舊 keg 與目前工具要分開看
Homebrew 的下載快取預設在 ~/Library/Caches/Homebrew,但 HOMEBREW_CACHE 可改變位置,應以 brew --cache 為準。formula 的版本化 keg 位於 brew --cellar,cask 記錄位於 brew --caskroom,目前使用中的版本通常透過 brew --prefix 底下的連結存取;下載檔通常可重新取得,舊 keg 的確切版本卻可能無法復原。目前安裝的軟體、Brewfile、dotfiles(點檔)、服務狀態、憑證與專案資料都不是快取。
從唯讀預覽開始
先用 du -sh "$(brew --cache)" 測量真正的下載快取,再執行 brew cleanup -n,逐項檢查過期下載、陳舊鎖定檔與舊 formula 版本。對熟悉的工具使用 brew list --versions 確認目前與舊版本,並判斷回復舊版的流程或寫死的路徑是否仍依賴舊 keg。預演(dry run)只是預覽,不是備份;Homebrew 移除的項目不保證進 macOS 垃圾桶,也不保證上游仍提供完全相同的版本。
- 執行 brew --cache,記錄目前下載快取的實際路徑。
- 執行 du -sh "$(brew --cache)",在不修改資料的情況下測量大小。
- 執行 brew cleanup -n,檢查每個下載檔與舊 formula 版本;再用 brew list --versions 核對重要工具。
- 決定使用一般 brew cleanup、針對單一項目的 brew cleanup <name>,或先預演再執行 brew cleanup --prune=all。
- 重新執行 brew cleanup -n 與 du -sh "$(brew --cache)",確認目前使用的 formula 版本仍在,並測試一個重要命令。
不要把 brew autoremove 接在 cleanup 後面當成固定流程。實際的 brew autoremove 會解除安裝依賴,可能立刻中斷 Homebrew 無法看見的指令碼或本機服務。
依可接受的恢復成本選擇 cleanup
核對 brew cleanup -n 後,執行 brew cleanup 進行一般保守維護;目前預設把超過 120 天的下載列為候選,也會移除舊 formula 版本。若只處理單一套件,先用 brew cleanup -n <name>,再用 brew cleanup <name>;不要把角括號照貼。只有願意讓所有快取都在日後重新下載時,才先預演 brew cleanup -n --prune=all,再執行 brew cleanup --prune=all。它不會解除安裝目前安裝的所有套件,但仍會進行一般 cleanup 所包含的舊版本清理。
保護已安裝軟體並驗證恢復路徑
brew autoremove 是解除安裝 Homebrew 判定已不再需要的依賴,不是快取清理;若另有需求,先獨立執行 brew autoremove --dry-run,確認指令碼、建置系統或服務沒有直接使用它。絕不能對 brew --prefix、brew --cellar 或 brew --caskroom 的輸出執行廣泛的 rm -rf。清理後重跑 brew cleanup -n、du -sh "$(brew --cache)" 與 brew list --versions,並測試重要命令;AskClean 可顯示核准的整個 Homebrew 快取並將它移到垃圾桶,但只有 Homebrew 本身能依套件狀態判斷哪些舊版本可清理。
清理決策與風險對照
先預覽 Homebrew 下載檔與舊 formula 版本,再用 brew cleanup 安全清理,同時保護目前工具、依賴、設定與專案資料。
| 項目或操作 | 檢查位置 | 刪除後果 |
|---|---|---|
| 下載快取、舊 keg 與目前工具要分開看 | brew --cache | Homebrew 的下載快取預設在 ~/Library/Caches/Homebrew,但 HOMEBREW_CACHE 可改變位置,應以 brew --cache 為準。formula 的版本化 keg 位於 brew --cellar,cask 記錄位於 brew --caskroom,目前使用中的版本通常透過 brew --prefix 底下的連結存取;下載檔通常可重新取得,舊 keg 的確切版本卻可能無法復原。目前安裝的軟體、Brewfile、dotfiles(點檔)、服務狀態、憑證與專案資料都不是快取。 |
| 從唯讀預覽開始 | brew cleanup -n | 先用 du -sh "$(brew --cache)" 測量真正的下載快取,再執行 brew cleanup -n,逐項檢查過期下載、陳舊鎖定檔與舊 formula 版本。對熟悉的工具使用 brew list --versions 確認目前與舊版本,並判斷回復舊版的流程或寫死的路徑是否仍依賴舊 keg。預演(dry run)只是預覽,不是備份;Homebrew 移除的項目不保證進 macOS 垃圾桶,也不保證上游仍提供完全相同的版本。 |
| 依可接受的恢復成本選擇 cleanup | brew cleanup / brew cleanup --prune=all | 核對 brew cleanup -n 後,執行 brew cleanup 進行一般保守維護;目前預設把超過 120 天的下載列為候選,也會移除舊 formula 版本。若只處理單一套件,先用 brew cleanup -n <name>,再用 brew cleanup <name>;不要把角括號照貼。只有願意讓所有快取都在日後重新下載時,才先預演 brew cleanup -n --prune=all,再執行 brew cleanup --prune=all。它不會解除安裝目前安裝的所有套件,但仍會進行一般 cleanup 所包含的舊版本清理。 |
| 保護已安裝軟體並驗證恢復路徑 | brew autoremove --dry-run (not cache cleanup) | brew autoremove 是解除安裝 Homebrew 判定已不再需要的依賴,不是快取清理;若另有需求,先獨立執行 brew autoremove --dry-run,確認指令碼、建置系統或服務沒有直接使用它。絕不能對 brew --prefix、brew --cellar 或 brew --caskroom 的輸出執行廣泛的 rm -rf。清理後重跑 brew cleanup -n、du -sh "$(brew --cache)" 與 brew list --versions,並測試重要命令;AskClean 可顯示核准的整個 Homebrew 快取並將它移到垃圾桶,但只有 Homebrew 本身能依套件狀態判斷哪些舊版本可清理。 |
常見問題
brew cleanup 在 Mac 上安全嗎?
它是 Homebrew 支援的維護命令,但應先執行 brew cleanup -n。它除了過期下載,也會移除舊 formula 版本;確認回滾與硬編碼流程不再需要舊 keg 後才能執行。
brew cleanup --prune=all 會刪什麼?
它會忽略檔案年齡清除快取,也仍會處理一般 cleanup 所涵蓋的陳舊鎖定檔與舊 formula 版本。先執行 brew cleanup -n --prune=all,並準備之後重新下載。
brew autoremove 是更徹底的快取清理嗎?
不是。它會解除安裝 Homebrew 認為已不再需要、原本作為依賴安裝的 formula。若要使用,必須先另行執行 brew autoremove --dry-run,確認沒有未宣告的指令碼或服務依賴。
參考來源