使用过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 卸载不干净的,联系我们哈。