MacOS 开发 - 软件安装常用文件夹 初探究竟


参考: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,删除时,可以检查前缀。

这里写图片描述


6、/Library/Preferences

这里写图片描述


7、/Library/PreferencePanes

这里写图片描述


猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/80385308