macOS 顯示「已損毀,無法打開」的解決方法
本文目錄
把 dmg 裡的應用程式拖進「應用程式」資料夾,按兩下,結果 macOS 回你一句「已損毀,無法打開。你應該將其丟到垃圾桶」——這一幕大概每個在 Mac 上裝開源軟體的人都遇過。
先講結論:檔案通常沒有壞。這是 Gatekeeper 針對「從網路下載、又沒有經過 Apple 公證流程」的程式所發出的提示,跟檔案完整性無關。同一類提示還有「無法驗證開發者」「來自身分不明的開發者」,成因是同一個。
下面依照從安全到進階的順序給出三種解法,並說明什麼情況下才適合這樣做。安裝流程本身若還沒走完,可以先看macOS 安裝教學。
為什麼會出現「已損毀」:Gatekeeper 與隔離屬性
當你透過瀏覽器下載檔案時,macOS 會替它加上一個叫做 com.apple.quarantine 的擴充屬性,標記它「來自網路,還沒被信任」。啟動程式時,Gatekeeper 會檢查這個標記,並確認程式是否有有效的開發者簽章與 Apple 公證。
開源專案通常不會為了發佈桌面版而購買商業開發者憑證與跑公證流程,於是檢查沒過,系統就丟出這句話。訊息寫得像是檔案毀損,實際上是信任驗證這一關沒過。理解這一點很重要:你要做的不是重新下載,而是明確告訴系統「這個程式我信任」。
補充:解壓縮後直接執行的單一檔案(例如 mihomo 核心)也會被同一個機制擋下,處理方式見下面的方法二。
方法一:從「隱私權與安全性」放行
這是最推薦的做法,不必碰終端機,權限範圍也最小:
- 先按兩下開啟該應用程式,讓系統記下被阻擋的紀錄,出現提示後按「好」關掉。
- 打開「系統設定」,到左側的「隱私權與安全性」。
- 往下捲到「安全性」區塊,會看到一行說明某個應用程式已被阻擋。
- 按下旁邊的「仍要打開」並確認,必要時輸入登入密碼或使用 Touch ID。
- 回到應用程式再開一次,這次就會正常啟動。
如果第三步找不到那一行,通常是還沒嘗試開啟過該程式:被阻擋的紀錄只保留最近一次,先做第一步再回來看。(不同 macOS 版本的選項名稱可能略有差異,以你目前的系統為準。)
方法二:用終端機移除隔離屬性
顯示「已損毀」時,方法一的按鈕有時不會出現,這時就直接移除隔離屬性。打開「終端機」執行:
sudo xattr -dr com.apple.quarantine "/Applications/Clash Verge.app"
指令拆開看:xattr 是管理擴充屬性的工具,-d 表示刪除指定屬性,-r 表示連同套件內部所有檔案一起處理。路徑請換成你實際安裝的應用程式,名稱含空格時記得用引號包起來。執行後輸入密碼(輸入時畫面不會顯示字元,屬於正常現象),沒有輸出就代表成功。
如果你處理的是解壓縮出來的核心執行檔,除了移除隔離屬性,通常還要補上執行權限:
chmod +x ./mihomo
xattr -d com.apple.quarantine ./mihomo
方法三:Finder 裡按右鍵選「打開」
在「應用程式」資料夾中找到該程式,按住 Control 鍵點一下(或直接按右鍵),從選單選擇「打開」,接著在跳出的對話框中再按一次「打開」。這個路徑等同於明確告知系統你要繞過預設檢查,之後再啟動就不會重複詢問。
要注意的是,這個做法主要對付的是「身分不明的開發者」,對「已損毀」不一定有效。試過沒用就改用方法二。
什麼情況才適合這樣做
上面三種方法本質上都是在解除系統的一道保護,所以判斷「值不值得解除」比操作本身更重要。務必符合這幾個條件:
- 軟體是開放原始碼、可以公開稽核的專案,例如 Clash Verge Rev 的原始碼就放在 GitHub 專案頁。
- 檔案來自官方 Releases 或你信任的鏡像,不是聊天群組裡轉傳、來源不明的安裝檔。
- 你能對照官方發佈頁的版本號與檔名,確認拿到的是同一個東西。
反過來說,任何要求你關閉 Gatekeeper 或停用整個系統防護的說法都值得懷疑:針對單一應用程式放行,跟關掉全系統防護,風險差距非常大。
常見問題
三種方法都試了還是打不開,怎麼辦?
先檢查晶片架構有沒有選錯。Intel Mac 無法執行 arm64 原生套件,硬開通常直接失敗;反過來 Apple Silicon 執行 Intel 版多半可經 Rosetta 2 轉譯運作。到「關於這台 Mac」看一下晶片欄位,再對照Intel 與 Apple Silicon 的選擇說明,確定下載的版本正確後重裝一次。
移除隔離屬性會讓 Mac 變得不安全嗎?
這道指令只作用於你指定的路徑,不會改變系統整體設定,其他程式仍照常受 Gatekeeper 檢查。風險關鍵不在指令本身,而在你放行的檔案是否可信。
每次更新版本都要再做一次嗎?
重新下載的安裝檔會帶上新的隔離屬性,通常需要再放行一次。若用戶端支援應用程式內更新,多數情況下不會再跳出這個提示。安裝檔可以到下載中心依晶片類型取得。