安全更新每一款 Mac App
Mac 應用程式可能來自 App Store、開發者官網、Homebrew 或企業管理系統。不同來源有不同的簽名、回退和自動更新規則。更新前先確認安裝管道,避免遺失授權,或讓同一應用程式出現兩個分別受管理的複本。
| 安裝來源 | 權威更新入口 | 不要隨意替換成 |
|---|---|---|
| Mac App Store | App Store 的更新 | 覆蓋商店管理副本的廠商下載套件 |
| 開發者網站 | App 內更新器或廠商下載頁 | 未明確移轉就改用 App Store 或 Homebrew |
| Homebrew formula 或 cask | brew outdated 與 brew upgrade,部分 cask 使用 App 自行更新 |
未確認 cask 設定就混用更新方式 |
| 企業管理 | 組織的管理入口 | 本機管理員繞過方式 |
App Store 應用程式
App Store 只更新透過商店安裝的應用程式。打開 App Store,在側邊欄選擇「更新」。自動應用更新位於 App Store > 設定,與 macOS 的「軟體更新」分開。Apple 的 App Store 更新說明列出了這兩個入口。
安裝了第三方命令列工具 mas 時,可以查看它辨識出的商店應用程式:
mas list
應用程式沒有出現在結果中,不足以證明它並非來自 App Store。收據、帳號權限和工具限制都可能影響辨識。
從開發者網站下載的應用程式
官網直裝應用程式可能使用 Sparkle、Electron 更新程式、自建服務,也可能只提供下載頁。許多應用程式會在選單中提供「檢查更新」。有些只在執行時檢查,有些會安裝登入項目或背景輔助程式。具體行為要看應用程式自己的更新設定。
Homebrew 應用程式
先查看過期項目,再升級指定套件或全部項目:
brew outdated
brew upgrade wget
把 wget 換成 brew outdated 回傳的 formula 或 cask 名稱。不帶名稱執行 brew upgrade 會升級所有過期項目。
重新整理套件中繼資料和升級軟體是兩件事,brew upgrade 才會執行這裡的套件升級。部分 cask 中的圖形應用程式也有自己的更新程式。根據 Homebrew 常見問題,Homebrew 能比較一部分 cask 的應用程式版本,標記為 version :latest 或內容難以判斷的 cask 可能會被略過。重要服務和開發工具鏈升級前,先查看 brew info 與不相容變更。
更新 macOS 本身
系統更新使用獨立管道:
softwareupdate -l
也可以打開 系統設定 > 一般 > 軟體更新。macOS 更新不會替你更新所有第三方應用程式。安裝前先備份,並確認驅動程式、虛擬化軟體、音訊工具和其他系統級軟體相容。Apple 的 macOS 更新說明也建議先備份。
安全地更新,而不只是盡快更新
- 確認近期備份可以還原,並為關鍵工具保留安裝套件或封存
- 閱讀版本說明,關注相容性、資料庫遷移和最低系統版本
- 確認官網下載來自原廠,應用程式已有程式碼簽名或公證
- 先更新少量非關鍵應用程式,檢查啟動、文件、外掛和背景服務後再繼續
- 除非準備遷移管理權,否則保持原來的安裝管道
回退可靠、相容紀錄穩定的應用程式適合自動更新。正式環境工具鏈、外掛宿主、驅動程式和維護時段很窄的電腦,更適合分批手動更新。
為什麼 macOS 沒有一個能更新所有應用程式的按鈕
App Store 依靠 Apple 收據管理軟體。Sparkle 使用開發者發布的 appcast,設定正確時會同時校驗 EdDSA 簽名和 Apple 程式碼簽名,具體機制見 Sparkle 的安全說明。Electron 應用程式和原廠更新程式使用各自的訂閱來源,Homebrew 則按 formula 與 cask 升級。
這些管道彼此獨立,統一清單需要保留應用程式來源和安裝規則。
統一更新清單有什麼用
Mole 的「軟體」頁面把多種管道彙總到一份清單,並保留每款應用程式的來源。它省去了逐個尋找入口的時間,但不會把所有更新變成同一種操作。
更新時按這個順序
列出應用程式來源,透過對應管道檢查更新,閱讀相容說明並備份關鍵狀態,再分批安裝。每批完成後,用原來的文件和工作流程複測。無需一次把所有版本號變成最新,先保住可用環境。
每一批更新後,開啟 App,從「關於」面板或 bundle 版本確認真正啟動的副本,不要假定安裝程式一定覆蓋成功。再驗證一個與工作有關的真實文件、外掛、裝置或背景服務,最後回到原更新管道複查。仍顯示過期,往往代表磁碟上有兩份 App,或更新程式替換的不是你啟動的 bundle。