Directory-Structure
達爾文的“私人”目錄有什麼用?
Darwin 有一個我在我找到的 Unix 文件中沒有看到
private
的目錄。那是特定於 Mac 的目錄嗎?它是乾什麼用的?系統升級之間是否保留?
/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
請注意 /private/var/db/dslocal/nodes/Default/ 在標準 unix 系統上相當於 OS X 的 /etc/passwd、/etc/groups 等,因此安裝所做的是創建(或替換它們已經存在)使用者 _assetcache 和 _geod,以及組 _assetcache。其他使用者和組將保留在原地。
此外,上述列表可能不完整。它僅顯示直接包含在更新有效負載中的文件,而不顯示將由安裝程序中包含的腳本修改的文件。