OS X文件系统的标准是什么?例如/ opt /与/ usr /


35

/opt/该做什么,应该做什么/usr/?我的理解是/usr/曾经用于用户主目录,但是由于它们存在于其中/Users/-现在的目的是什么?

是否有手册或指南应使用所有内置目录?像是什么/home/,还是/net/


5
apple.stackexchange.com/questions/80902/…是否回答您的查询?
bmike

谢谢@bmike,它的确回答了我的即时问题,但是如果有人编写了更完整/详尽的描述,我仍然很好奇。
DilithiumMatrix 2014年

您是否遵循了“ 文件系统层次结构标准”的链接?
zelanix 2014年

1
@zelanix是的,它仍然不能充分解决OS X的问题
DilithiumMatrix

Answers:


48

是否有手册或指南应使用所有内置目录?像什么是/ 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

1
那么,例如,/usr/X11/不建议?
GEdgar 2014年

@zhermes我很高兴您发现它很有用。
2014年

1
对于没有OS X(针对man hier)的读者:Apple的hier(7)
Graham Perrin

1
InsanelyMac论坛上的这篇帖子说:“ Apple上次在Mavericks中使用了mach_kernel作为其内核的文件名,因此您无法在Sierra中找到任何此类文件!自优胜美地以来,OS X内核现在位于/ System / Library / Kernels下。文件名kernel ”,因此我的先前猜测显然是错误的。
RandomDSdevel

1
@RandomDSdevel谢谢,我没有意识到这一变化,我已经更新了答案。
Jaume

0

当我读到/opt(通常/opt/localMacPorts 相关联)和路径的“标准”用法时,我也想到了Fink,它早在2001年就已经存在了。Fink广泛使用以下路径:

/sw

Mac OS X上粗心使用文件系统层次结构非标准部分的示例

2003-02-06

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

关于事件的其他讨论,包括对许可的尊重,包括:

2003-04-16

一个芬克新闻资料:

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升级的文件。

2003-05

McAfee Virex版本7.2.1的发行说明未提及对Fink用户造成的问题。

作为旁注...

2004-08-31

.Mac成员不再可以使用Virex 7.5的观察结果


与BSD相关

OS X…我的理解是/usr/曾经用于用户主目录

对于FreeBSD和PC-BSD这样的操作系统,情况仍然如此。

虽然/usr/home/https://www.freebsd.org/cgi/man.cgi?query=hier&sektion=7&manpath=FreeBSD+10.2-RELEASE中没有明确说明,但路径在以下文档中得到了举例说明:


那么为什么这会被否决呢?
Pacerier's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.