达尔文的“私人”目录有什么用?

oro*_*ome 8 directory-structure darwin

Darwin 有一个我在找到的 Unix 文档中没有看到private目录。那是 Mac 特定的目录吗?它是做什么用的?它是否在系统升级之间保留?

Gor*_*son 6

/private 是标准 unix 文件系统层次结构部分的容器,这些层次结构可能因个人计算机而异(例如,/etc 是 /private/etc 的符号链接,实际配置文件所在的位置)。AIUI 这样做最初是为了支持 NextSTEP 下的网络引导。这个想法是 / 将是一个网络安装的共享驱动器,本地卷将安装在 /private 上以存储每台计算机的文件(请参阅之前的 apple.se 答案)。这种需求早已过去,但该组织因惯性而停滞不前。

至于它在升级过程中的处理:它在升级过程中大多留在原地,但可能会进行修改。例如,以下是 10.8.2 更新中新增/更改的文件列表:

$ pkgutil --payload-files OSXUpd10.8.2.pkg | grep ./private
./private
./private/etc
./private/var
./private/var/db
./private/var/tmp
./private/var/tmp/DeferredInstallFixup.file_list
./private/var/db/.SystemPolicy-default
./private/var/db/dslocal
./private/var/db/dslocal/nodes
./private/var/db/dslocal/nodes/Default
./private/var/db/dslocal/nodes/Default/groups
./private/var/db/dslocal/nodes/Default/groups/_assetcache.plist
./private/var/db/dslocal/nodes/Default/users
./private/var/db/dslocal/nodes/Default/users/_assetcache.plist
./private/var/db/dslocal/nodes/Default/users/_geod.plist
./private/var/db/gke.auth
./private/var/db/gke.sigs
./private/etc/authorization.merge
Run Code Online (Sandbox Code Playgroud)

请注意,/private/var/db/dslocal/nodes/Default/ 相当于标准 unix 系统上的 OS X 的 /etc/passwd、/etc/groups 等,因此安装所做的是创建(或替换,如果它们已经存在)用户 _assetcache 和 _geod,以及组 _assetcache。其他用户和组将留在原地。

此外,上述列表可能不完整。它仅显示直接包含在更新有效负载中的文件,而不显示将由安装程序中包含的脚本修改的文件。