使用過mac 一段時間后,讀者會了解到,App(應用程序)一般通過 Apple store 或 網站下載獲得。Apple store 上的軟件的安裝和卸載就不談了,簡潔的令人感動。
而網站上的軟件分發一般有三種方式:分發 dmg,分發 zip 包或者分發 pkg包。
前兩種比較簡單,雙擊 dmg 或者 zip 包后就能得到 app。這也是Mac 上主流的app分發方式;類似于windows 系統上的綠色安裝包,解壓即可用。
下面就是今天要講述的內容了:pkg 包的安裝卸載。
pkg 包的安裝:
類似于 Windows 上安裝軟件,雙擊pkg 包后會打開了一個安裝界面,選擇磁盤,然后各種點下一步就完成安裝了。
顯然這種方式相比"解壓即用"流程長很多,但很多著名的軟件都選中這種安裝方式,比如 "NTFS For Mac"、"Microsoft office"等。原因是因為系統的 Pkg 安裝器允許軟件在安裝時做額外的事情,即允許安裝 app 時執行腳本,以安裝app 運行所需要的關鍵組件。
以 "NTFS For Mac"為例,它在安裝過程中會安裝 kext(內核擴展),Preference Panes (系統偏好設置的小組件)‘ FileSystem(文件系統) ,Daemon(守護進程),LaunchAgents(啟動項, NTFS 用于檢測軟件更新)等。只有上述關鍵組件成功安裝了,才能保證 NTFS For Mac 的正常運行。
pkg 包的卸載
說了一大堆,讀者可能就會問了,對我沒啥意義呀,就是安裝費點事罷了。 這里我只能說 "too young too simple", 安裝時沒感覺,但卸載就麻煩了。
如果用戶只是簡單的卸載了"NTFS for Mac.app", 那么上面 pkg 安裝過程中安裝的 kext, FileSystem, Daemon 等等還是會留存在電腦上。
更可惡的是還遺留著LaunchAgents, 每當重啟電腦時,NTFS Updater 總會彈窗提醒是否要更新。
那么如何完全卸載安裝的 pkg包呢?
有的軟件很良心,像 NTFS 就在安裝包內預留這一個 "Uninstall NTFS For Mac .app"。但很多軟件的 Pkg沒有預留卸載器,或者卸載器也無法完全卸載干凈。所以了解下如何清理 pkg 是很有必要的。
關鍵:Bom文件
Bom:(Bill of Materials)
當 Pkg 安裝時,系統會自動將安裝流程記錄在 Bom 文件中。包括文件的安裝路徑、大小、校驗和等。Bom 文件存儲在 "/private/var /db/receipts",以"NTFS For Mac"為例,它的 bom 文件叫做 "com.paragon-software.pkg.ntfs.bom"。可以通過"lsbom -p MUGsf /private/var/ db/receipts/com.paragon-software.pkg.ntfs.bom" 讀取 bom 文件中的內容。這個目錄下還有一個同名但后綴不同的 plist 文件,記錄著 pkg 版本,location 等信息。結合著兩個文件就能得到所有 pkg 安裝時額外安裝的文件了。
移除額外安裝的文件
得到了PKG 安裝時額外安裝的文件,卸載時直接刪除文件就好了嘛?
不行的。比如上面 NTFS 安裝的 Kext.Daemon 等,是不能直接刪除的。以 Kext 為例:需要執行具體的 "kext unload" 操作, 之后才能安全刪除。簡單來說就是不同的文件類型有不同的卸載方式,只有對 OSX 比較了解的開發人員才能勝任這個工作。
說了這么多,好像對普通讀者沒啥用呀。PKG 卸載很麻煩,還需要專業知識。麻煩讀者別打我哈,我有一個簡單的辦法,使用 Lemon 進行卸載就好了。
Lemon 最新版已經適配了某些 Pkg包的卸載。如果讀者有遇到哪款 app 卸載不干凈的,聯系我們哈。