应/opt/
该做什么,应该做什么/usr/
?我的理解是/usr/
曾经用于用户主目录,但是由于它们存在于其中/Users/
-现在的目的是什么?
是否有手册或指南应使用所有内置目录?像是什么/home/
,还是/net/
?
应/opt/
该做什么,应该做什么/usr/
?我的理解是/usr/
曾经用于用户主目录,但是由于它们存在于其中/Users/
-现在的目的是什么?
是否有手册或指南应使用所有内置目录?像是什么/home/
,还是/net/
?
Answers:
是否有手册或指南应使用所有内置目录?像什么是/ home /或/ net /?
请查看《文件系统编程指南》以获取最新信息,以及《man hier
终端》中的内容,该指南提供了文件系统层次结构的“历史性草图”(此答案的末尾随附以供参考)。
对您的问题的评论提到了文件系统层次结构标准。仔细阅读《文件系统编程指南》和man hier
,您可能会得出结论,即macOS不遵循FHS,这更像是Linux。当然,由于UNIX的共同起源,FHS和macOS中的文件系统布局之间存在相似之处,但差异是惊人的。macOS不使用以下任何一项:
/boot
文件夹-> macOS /System/Library/Kernels
代替使用(在旧版本的macOS中,包含内核的文件夹为/
)/home
文件夹-> macOS /Users
改为使用/root
文件夹-> macOS /var/root
改为使用并且/opt
在任何文档中都没有一次被提及(/opt
下面有更多内容。)
MacOS和柔顺FHS-OS之间的进一步distiction是使用/private
,例如/etc
是一个符号链接到/private/etc
。
关于/net
:这是一个自动安装程序映射(在中列出/etc/auto_master
),有关更多信息,请参见Wikipedia。
/ opt /应该做什么,/ usr /应该怎样?我的理解是/ usr /曾经用于用户主目录,但是既然存在于/ Users /中-现在的目的是什么?
尽管/usr
过去曾用来放置用户的主目录,但现在情况已不再如此。
如今,/usr
包含用户命令(/usr/bin
适用于普通用户和/usr/sbin
管理用户,如root
),共享库(/usr/lib
),手册页(/usr/share/man
),不应由用户直接运行的可执行文件(/usr/libexec
)和其他功能。
它还提供了子目录,/usr/local
用于放置基本操作系统不附带的程序,库和其他文件。
/opt
具有非常相似的作用,/usr/local
并且它们似乎可以互换。但是,从我的经验与其他的Linux / UNIX系统管理员的工作,似乎有一个偏好的/usr/local
基于BSD的UNIX操作系统。
因此,这就是我的看法: macOS是基于BSD的,因此我将使用/usr/local
。请注意,您可以创建一个程序目录,然后将符号链接到/usr/local/bin
,等等,例如:
/usr/local/mysql
/usr/local/mysql/bin/mysqladmin
/usr/local/mysql/lib/libmysqlclient.so
/usr/local/bin/mysqladmin -> ../mysql/bin/mysqladmin
/usr/local/lib/libmysqlclient.so -> ../mysql/lib/libmysqlclient.so
这在Linux和UNIX中也同样很普遍,但是FHS 明确禁止这样做:如果希望将第三方软件包安装在它们自己的目录层次结构中,则应该改用第三方软件包/opt/<package>
。请注意,遵守FHS要求将配置文件放入/etc/opt/<package>
,将变量文件放入/var/opt/<package>
。
因此,在macOS中,我建议您坚持/usr/local
如上所述。
我知道安装在中的诸如Cisco VPN和XQuartz之类的附加软件/opt
,因此上述区别开始变得模糊。
man hier
如上所述,这是man hier
:
A historical sketch of the filesystem hierarchy. The modern macOS filesystem is documented in the
``File System Programming Guide'' available on Apple Developer.
/ root directory of the filesystem
/bin/ user utilities fundamental to both single-user and multi-user environments
/dev/ block and character device files
fd/ file descriptor files; see fd(4)
/etc/ system configuration files and scripts
/mach_kernel kernel executable (the operating system loaded into memory at boot time).
/sbin/ system programs and administration utilities fundamental to both single-user and multi-
user environments
/tmp/ temporary files
/usr/ contains the majority of user utilities and applications
bin/ common utilities, programming tools, and applications
include/ standard C include files
arpa/ C include files for Internet service protocols
hfs/ C include files for HFS
machine/ machine specific C include files
net/ misc network C include files
netinet/ C include files for Internet standard protocols; see inet(4)
nfs/ C include files for NFS (Network File System)
objc/ C include files for Objective-C
protocols/ C include files for Berkeley service protocols
sys/ system C include files (kernel data structures)
ufs/ C include files for UFS
lib/ archive libraries
libexec/ system daemons & system utilities (executed by other programs)
local/ executables, libraries, etc. not included by the basic operating system
sbin/ system daemons & system utilities (executed by users)
share/ architecture-independent data files
calendar/ a variety of pre-fab calendar files; see calendar(1)
dict/ word lists; see look(1)
web2 words from Webster's 2nd International
words common words
man/ manual pages
misc/ misc system-wide ascii text files
mk/ templates for make; see make(1)
skel/ example . (dot) files for new accounts
tabset/ tab description files for a variety of terminals; used in the term-
cap file; see termcap(5)
zoneinfo/ timezone configuration information; see tzfile(5)
/var/ multi-purpose log, temporary, transient, and spool files
at/ timed command scheduling files; see at(1)
backups/ misc. backup files
db/ misc. automatically generated system-specific database files
log/ misc. system log files
mail/ user mailbox files
run/ system information files describing various info about system since it was
booted
utmpx database of current users; see utmpx(5)
rwho/ rwho data files; see rwhod(8), rwho(1), and ruptime(1)
spool/ misc. printer and mail system spooling directories
mqueue/ undelivered mail queue; see sendmail(8)
tmp/ temporary files that are kept between system reboots
folders/ per-user temporary files and caches
/usr/X11/
不建议?
man hier
)的读者:Apple的hier(7)
当我读到/opt
(通常与/opt/local
MacPorts 相关联)和路径的“标准”用法时,我也想到了Fink,它早在2001年就已经存在了。Fink广泛使用以下路径:
/sw
Virex 7.2,免费提供给所有.Mac成员,臭名昭著地覆盖了Fink库:
这真是太糟了。芬克用户,请不要安装此…
/Volumes/Virex 7.2.dmg/Virex 7.2.pkg 328 % lsbom Contents/Resources/Virex\ 7.2.bom | grep sw
./sw 40775 0/80
./sw/lib 40775 0/80
./sw/lib/libcrypto.0.9.6.dylib 100644 0/80 945416 3192711062
./sw/lib/libcurl.2.0.2.dylib 100644 0/80 634480 510417796
./sw/lib/libcurl.2.dylib 100644 0/80 634480 510417796
./sw/lib/libdl.0.dylib 100644 0/80 15124 4193639260
./sw/lib/libssl.0.9.6.dylib 100644 0/80 261776 3001832603
关于事件的其他讨论,包括对许可的尊重,包括:
一个芬克新闻资料:
Virex问题解决
迈克菲(McAfee)发布了Virex 7.2.1,它不再覆盖主Fink目录
/sw
。Fink用户应继续避免使用Virex 7.2。早期的报告表明,将Virex从7.2升级到7.2.1仍然存在一些问题。如果在未安装Fink的情况下升级Virex,并且随后希望安装Fink,
/sw
则在安装前需要手动删除目录。并且,如果在已经安装Fink的情况下升级Virex,则应立即运行fink reinstall openssl-shlibs dlcompat-shlibs curl-ssl-shlibs来恢复可能已删除Virex升级的文件。
McAfee Virex版本7.2.1的发行说明未提及对Fink用户造成的问题。
作为旁注...
对于FreeBSD和PC-BSD这样的操作系统,情况仍然如此。
虽然/usr/home/
在https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE中没有明确说明,但路径在以下文档中得到了举例说明: