1.17. /usr

/usr 通常包含系统上绝大部分的数据。因此,它是系统中最重要目录之一,因为它包含了所有用户二进制文件、它们的文档、库、头文件等等... X 及其支持库也在这里可以找到。诸如 telnet、ftp 等用户程序也放置在此处。在最初的 Unix 实现中,/usr 是用户主目录的所在地(也就是说,/usr/someone 是当时现在被称为 /home/someone 的目录)。在当前的 Unix 系统中,/usr 是用户态程序和数据(相对于“系统态”程序和数据)的所在地。名称没有改变,但其含义已经从“所有用户相关”缩小和扩展到“用户可用的程序和数据”。因此,现在有些人可能会将此目录称为“用户系统资源”(User System Resources),而不是最初意图的“用户”(user)。

/usr is shareable, read-only data. That means that /usr should
be shareable between various FHS-compliant hosts and must not be written to.
Any information that is host-specific or varies with time is stored elsewhere.

Large software packages must not use a direct subdirectory under the /usr
hierarchy.

/usr/X11R6

另一个大型子目录结构从这里开始,包含关于 X Window 系统的库、可执行文件、文档、字体以及更多内容。将其包含在此处有些不一致,'​/usr'​ 和 '/usr/X11R6' 目录之间的区别也是如此。人们可能会认为,仅在 X 上运行的程序将其文件放在 '/usr/X11R6' 层次结构中,而其他程序则使用 '/usr'。遗憾的是,事实并非如此。KDE 和 GNOME 将其文件放在 '/usr' 层次结构中,而窗口管理器 Window Maker 则使用 '/usr/X11R6'。X11R6 的文档文件不在 '/usr/X11R6/doc' 中,而主要在 '/usr/X11R6/lib/X11/doc' 中。这种混乱是由于与其他操作系统不同,图形桌面不是系统不可或缺的一部分。Linux 主要仍用于服务器,在服务器上图形系统没有意义。

此层次结构保留给 X Window 系统版本 11 发行版 6 以及相关文件。为了简化事情并使 XFree86 与其他系统上的 X Window 系统更兼容,如果 /usr/X11R6 存在,则必须存在以下符号链接。

  /usr/bin/X11 -> /usr/X11R6/bin
  /usr/lib/X11 -> /usr/X11R6/lib/X11
  /usr/include/X11 -> /usr/X11R6/include/X11

一般来说,不应通过上述符号链接安装或管理软件。它们仅供用户使用。困难之处在于 X Window 系统的发布版本——在过渡时期,不可能知道正在使用的 X11 的版本。

/usr/X11R6/bin

XFree86 系统二进制文件。这些对于 X 窗口系统的初始化、配置和运行是必要的。X、xf86config、xauth、xmodmap 甚至 xpenguin 都位于此处。

/usr/X11R6/include

XFree86 系统头文件。编译某些使用 X 工具包的应用程序时需要它们。

/usr/X11R6/lib

XFree86 系统库。

/usr/X11R6/lib/modules

XFree86 系统模块。这些是 X 启动时加载的模块。没有这些模块,video4linux、DRI 和 GLX 扩展以及某些输入设备的驱动程序将无法运行。

/usr/X11R6/lib/X11/fonts

XFree86 系统字体。'xfs'(X 字体服务器)和类似程序使用的字体。

/usr/bin

此目录包含系统上绝大多数的二进制文件。此目录中的可执行文件种类繁多。例如,vi、gcc、gnome-session 和 mozilla 都可以在这里找到。

/usr/doc

中央文档目录。文档实际上位于 /usr/share/doc 并从此链接。

/usr/etc

理论上,这是另一个用于配置文件的目录。现在几乎未使用。

/usr/games

曾经,此目录包含网络游戏文件。现在很少使用。

/usr/include

用于“头文件”的目录,编译用户空间源代码时需要。

/usr/include/'package-name'

应用程序特定的头文件。

/usr/info

此目录曾经包含 info 文档系统的文件。现在它们位于 '/usr/share/info' 中。

/usr/lib

此目录包含程序库。库是常用程序例程的集合。

/usr/local

'/usr/local' 背后的最初想法是在每台机器上除了 '/usr' 之外,还有一个单独的(“本地”)'/usr' 目录,'/usr' 目录可能只是从其他地方以只读方式挂载。它复制了 '/usr' 的结构。如今,'/usr/local' 被广泛认为是存放自编译或第三方程序的好地方。/usr/local 层次结构供系统管理员在本地安装软件时使用。它需要安全,以免在系统软件更新时被覆盖。它可用于在一组主机之间共享但在 '/usr' 中找不到的程序和数据。本地安装的软件必须放在 /usr/local 而不是 /usr 中,除非它是为了替换或升级 /usr 中的软件而安装的。

/usr/man

它曾经保存 man pages。它已移至 /usr/share/man。

/usr/sbin

此目录包含用于管理系统的程序,旨在由 'root' 运行。与 '/sbin' 类似,它不是用户 $PATH 的一部分。此处包含的二进制文件示例有 chroot、useradd、in.tftpd 和 pppconfig。

/usr/share

此目录包含“可共享的”、与体系结构无关的文件(文档、图标、字体等)。但是请注意,'/usr/share' 通常不打算由不同的操作系统或同一操作系统的不同版本共享。任何包含或需要不需要修改的数据的程序或软件包都应将该数据存储在 '/usr/share'(或 '/usr/local/share',如果本地安装)中。建议为此目的在 /usr/share 中使用子目录。”

/usr/share/doc

软件包特定文档文件的位置。这些目录通常包含可能有用的信息,这些信息可能不在 man pages 中。它们还可能包含某些实用程序的模板和配置文件,从而使配置更加容易。

/usr/share/info

'info' 页面的位置。这种文档风格现在似乎在很大程度上被忽略了。手册页更受欢迎。

/usr/share/man

手册页。它们被组织成 8 个部分,将在下面解释。

man1: User programs
Manual pages that describe publicly accessible commands are contained 
in this chapter. Most program documentation that a user will need to 
use is located here.

man2: System calls
This section describes all of the system calls (requests for the kernel 
to perform operations).

man3: Library functions and subroutines 
Section 3 describes program library routines that are not direct calls 
to kernel services. This and chapter 2 are only really of interest to
programmers.

man4: Special files
Section 4 describes the special files, related driver functions, and 
networking support available in the system. Typically, this includes 
the device files found in /dev and the kernel interface to networking 
protocol support.

man5: File formats
The formats for many data files are documented in the section 5. This 
includes various include files, program output files, and system files.

man6: Games
This chapter documents games, demos, and generally trivial programs.
Different people have various notions about how essential this is.

man7: Miscellaneous Manual pages that are difficult to classify are 
designated as being section 7. The troff and other text processing 
macro packages are found here.

man8: System administration Programs used by system administrators
for system operation and maintenance are documented here. Some of
these programs are also occasionally useful for normal users.

/usr/src

'linux' 子目录包含 Linux 内核源代码、头文件和文档。

/usr/src/RPM

RPM 提供了一个从 SRPM 构建 RPM 的子结构。此分支的组织相当合乎逻辑,软件包根据软件包的体系结构进行组织。

/usr/src/RPM/BUILD

用于临时存储从源代码构建的 RPM 二进制文件的位置。

/usr/src/RPM/RPMS/athlon, /usr/src/RPM/RPMS/i386, /usr/src/RPM/RPMS/i486, /usr/src/RPM/RPMS/i586, /usr/src/RPM/RPMS/i686, /usr/src/RPM/RPMS/noarch

这些目录包含依赖于体系结构的 RPM 源文件。

/usr/src/RPM/SOURCES

此目录包含要打包的软件的源 TAR 文件、补丁和图标文件。

/usr/src/RPM/SPECS

RPM SPEC 文件。SPEC 文件是一个包含构建软件包所需的信息以及脚本的文件。

/usr/src/RPM/SRPMS

包含构建产生的源 RPM 文件。

/usr/src/linux

包含 Linux 内核的源代码。

/usr/src/linux/.config

上次内核源代码配置。此文件通常在内核编译期间通过 'make config'、'make menuconfig' 或 'make xconfig' 步骤创建。

/usr/src/linux/.depend, /usr/src/linux/.hdepend

'make dep' 检查您在创建 .config 文件时所做的选择的依赖项。它确保可以找到所需的文件,并构建一个将在编译期间使用的列表。如果此过程成功,则会创建这两个文件。

/usr/src/linux/COPYING

GNU 许可证

/usr/src/linux/CREDITS

一个部分 credits 文件,记录了为 Linux 项目做出贡献的人员。它按姓名排序并格式化,以便脚本轻松进行 grepping 和美化。字段包括:姓名 (N)、电子邮件 (E)、网址 (W)、PGP 密钥 ID 和指纹 (P)、描述 (D) 和邮寄地址 (S)。

/usr/src/linux/MAINTAINERS

维护者列表以及如何提交内核更改的详细信息。

/usr/src/linux/Makefile

包含编译工作内核所需的数据。它允许开发人员和最终用户通过几个简单的步骤(即 make dep、make clean、make bzImage、make modules、make modules_install)编译内核,并且如果部分内核已经完成并且是最新的,则不必担心从头开始重新编译所有内容。

/usr/src/linux/README

这些是 Linux 2.4 版本的发行说明。请仔细阅读它们,因为它们会告诉您这一切是关于什么的,解释如何安装内核,以及如果出现问题该怎么办。

/usr/src/linux/REPORTING-BUGS

报告 Linux 错误的建议程序。您没有义务使用错误报告格式,它仅作为指导,说明哪种类型的信息对开发人员有用 - 仅此而已。

/usr/src/linux/Rules.make

此文件包含在多个 Makefile 之间共享的规则。

/usr/src/linux/Documentation

包含可能需要重新编译内核的文档。但是,它也提供了关于您的 Linux 系统的大量通用信息。对于那些希望获得有关此目录内容更多信息的人,您可以查阅 /usr/src/linux/Documentation/00-INDEX 文件。更详细的文档可以在 /usr/src/linux/Documentation/Docbook 中找到。当然,此目录的内容是用 Docbook 编写的,但可以使用 'pdfdocs'、'psdocs' 和 'htmldocs' 的 make 目标将其转换为 pdf、ps 或 html。

/usr/tmp

用户空间临时文件。在现代发行版中根本找不到此目录,很可能是作为 Linux UNIX 传统的后果而创建的。