参考:https://segmentfault.com/a/1190000005035742
Mac和Windows操作系统有一个很大的不同,大部分App是没有安装程序的,一般下载下来就是一个dmg文件,解开之后直接将App拖到应用程序目录下就可以了,所以给人感觉卸载也就是将App拖到废纸篓然后清空。
如果真这样做就大错特错,即使一个最简单的App都会在下面几个目录中或多或少留下纪念,这些目录一般有:
安装常用文件夹
~/Library
~/Library/Application Support
~/Library/Application Support/CrashReporter
~/Library/Caches
~/Library/Containers
~/Library/LaunchAgents
~/Library/Preferences
~/Library/PreferencePanes
pkg 安装常用文件夹
如果一个程序是通过pkg方式安装,或者是在第一次运行时请求管理员权限,那一般还会在如下几个目录中留点纪念:
/Library
/Library/Application Support
/Library/Extensions
/Library/LaunchAgents
/Library/LaunchDaemons
- `/Library/PreferencePanes“
/Library/Preferences
以上都还是只是列出了部分,不同的App由于需要还会在其他目录中安装一些文件,比如字处理软件一般会在/Library/Fonts下面安装字体,有些扩展组件会放在/Library/ScriptingAdditions下面。
~/Library 和 /Library
的区别
~/Library 为相对路径,文件在 user 下面,全名为:/Users/administrator/Library
/Library 为绝对路径,在 Macintosh 下面。
详情探究
1、~/Library
这里很少常见的软件名,依稀可见一个 有道云笔记。
2、~/Library/Application Support
这个目录可以说是App最重要的文件目录。
名字以app名,非bundleID 命名。
一些App本身并不大,但是需要的支持组件和内容非常多,特别是采用第三方插件和缓存网络内容的软件,例如我用的Dash,本身的大小只有24MB左右,但是由于经常浏览资料,所以缓存了很多网络内容,使得它的Support目录达到了1.37GB!可想而知,如果只是将App扔到废纸篓,几乎不会节省任何空间。
3、~/Library/Application Support/CrashReporter
本机没有这个目录哦
4、~/Library/Caches
以 bundleID 名存储。
5、~/Library/Containers
以 bundleID 名存储。
开启沙盒的Mac app,沙盒存储在此。
6、~/Library/LaunchAgents
文件貌似不多。
存放随机启动配置文件的地方。
大部分App只会往这里写启动信息,请神容易送神难,要送神,只有用第三方工具或是自己手动清理了。
LaunchAgents 和 LaunchDaemons 是有一些区别的,两者虽然都是随机启动,详细对比请看LaunchAgents VS LaunchDaemons
7、~/Library/Preferences
保存在 info.plist 中,非标配的一些设置。比如sparkle 的更新链接。
保存的是App设置,一般来说,稍微有点规模的软件都有自己的配置信息,放在这里的文件虽然占空间不多,但是清理掉还是有好处的,例如有些App不能正常工作,即使卸载重装也不行,往往就是配置文件出错了,把这里清理掉之后再重装就会有比较好的效果。
LaunchDaemons vs LaunchAgents
http://www.grivet-tools.com/blog/2014/launchdaemons-vs-launchagents/
LaunchDaemons:在系统启动时运行,无法展示信息到用户界面(GUI);这个限制可能是因为他们运行时,还没有用户登录。
建议将你个人的 plist LaunchDaemons 存储到 /Library/LaunchDaemons.
不建议存储到 /System/Library/LaunchDaemons/
, 因为系统升级时,这里可能会被重写。
LaunchAgents:用户登录的时候启动。可以通过GUI展示信息。
~/Library/LaunchAgents
和/Library/LaunchAgents
的区别
~/Library/LaunchAgents
只为当前用户启动。
/Library/LaunchAgents
为所有用户启动。不要放进 /Library/LaunchDaemons
,因为 LaunchDaemons 会一直在后台运行。
8、~/Library/PreferencePanes
我的电脑中没有使用到这里。
pkg 安装目录
1、/Library
这里就看不到一些常见的软件名了;
可以看到python、Java、mcAfee 这些。
2、/Library/Application Support
3、/Library/Extensions
可以发现里面都是kext文件,kext文件是一个Mac OS X内核扩展,常见于Hackintosh(PC上的黑苹果)。它们通常用于设备驱动程序,运行于系统的核心基底。。
系统在启动的时候 ,会从 extensions.mkext 文件夹中加载。
当你安装新驱动的时候,需要删除它,重启后,会自动重建的。
4、/Library/LaunchAgents
这里也是以 bundleID 名存储。和上面的 LaunchAgents 保存的app不同。
5、/Library/LaunchDaemons
安装一个 McAfee 会有这么 LaunchDaemons,删除时,可以检查前缀。