popbones
2015-03-07 06:06:46 +08:00
一般PKG安装的软件都不是直接删掉Applications文件夹中的文件就可以的“完全清除”的,一般开发者都会提供卸载指南或者相应的卸载程序。
一个原因在于一般只有软件的安装过程比较复杂才会开发者才会使用PKG的方式安装包,简单的软件都会采用使用DMG拖拽程序文件至Applications的方式安装。这里说的“复杂”是指一款软件需要使用或提供较为高级的系统功能,比如涉及多个软件的软件套装(例如Office、Adobe CS),或需要在特定的系统目录安装文件(例如输入法需要安装到Library/Input Methods,浏览器插件需要安装到Library/Internet Plugins),亦或有些软件需要提自身的软件管理(比如PD、BattleNet都要在/Users/Shared安装一些文件以提供多用户的支持),这些情况都不是简单的拖拽可以实现,所以会使用Mac OS X Installer,也就是默认运行PKG的那个向导程序。其实和Windows Installer以及很多Windows程序使用的Install Wizard一样,Mac OS X Installer本身完全可以培植出用于卸载软件的PKG文件,只是很少有开放上这么做,因为卸载往往只是删除文件,所以大多数情况下一个Shell脚本即可完成,而就算通过卸载指南引导用户手动完成也十分简单。
很多说Mac OS X软件管理更优的原因在于其多数软件都可以通过绿色的形式安装和卸载。有人可能会说一点都不绿色,我用CleanMyMac一扫描,Library目录里面各种软件残留。但是这些软件残留都是静态的,没有软件用它,它们就只是待在那里,并不会影响系统性能。而Windows上就算所谓的绿色软件也只是不需要安装而已,注册表残留还是尝尝会发生,并且往往会影响系统性能。而很多情况下,Windows中就算是使用了卸载程序卸载也不能保证100%无注册表残留,这个还是要看软件开发者上不上心。这点结合Mac上很多软件开发者可以但并没有提供卸载脚本来看,软件开发者真的对卸载这件事没有很上心。
另外对于通过Mac App Store安装的程序和普通拖拽安装的程序相比,区别主要在于普通拖拽安装的程序支持和配置文件一般在Library/Application Support和Library/Preferences目录中,而Mac App Store支持和配置文件都被放倒了Library/Containers或Library/Shared Containers当中,这主要是其沙盒机制的要求。而关于PKG程序,其实所有通过PKG安装的程序Mac OS X都会保留一份安装纪录,成为“回执”,一般保存在/private/var/db/receipts目录当中,如果你安装了Pacifist则可以查看.bom文件查看一个PKG都安装了什么。
到了这里你会发现Mac OS X中所有的软件都是拥有一个ID,一般形式为逆网址形式,例如com.公司名称.软件名称com.microsoft.office.all.automator.pkg.14.1.0.bom是安装Office相关的Automator动作的安装包的文件清单。其实到了这里你就基本可以手动清理软件了,因为无论是PKG还是拖拽软件都是围绕着软件ID的。一般你只需要到下列目录中寻找和删除相关的“软件残余”即可卸载软件:
1)在Applications和~/Applications删除程序文件
2)在~/Library/Application Support中删除程序支持文件,这个目录是软件随便使用的,一般建议使用软件ID作为自目录,也有软件自定义子目录的,一般都很明显,并且会包含软件名称,一个软件可能有多个文件或目录
3)在~/Library/Preferences中删除程序的设置文件,一个软件可能有不止一个配置文件
4)在~/Caches中删除软件缓存,其实不删也没事,可以定期的清空所有缓存避免缓存损坏造成的异常。
5)在~/Library/LaunchAgents中删除软件在系统启动时运行的项目
6)在/Library/LaunchDaemons中删除软件在系统启动时运行的项目
8)在/Library和/System/Library以及/Users/Shared中删除相关的程序文件,如果有的话。
9)根据软件类型可能还包含以上提到的目录(一下Library指/Library,~/Library,/System/Library,/Users/Shared/Library:
9.1)输入法Library/Input Methods
9.2)互联网插件Library/Internet Plug-Ins(Flash就在这里面)
9.3)系统字典Library/Dictionaries
9.4)Automater动作Library/Automator
9.5)打印机驱动Library/Printers
以上为一些关于卸载Mac OS X层软件的一些点滴。关于BSD层也就是Darwin层的软件,比如你在OS X上装了一个Python3想要卸载就完全是另一个话题了。