Installation guide

Chapter 5. File System Structure
34
5.2.1.13. The /usr/ Directory
The /usr/ directory is for files that can be shared across multiple machines. The /usr/ directory is
often on its own partition and is mounted read-only. At a minimum, /usr/ should contain the following
subdirectories:
/usr/bin, used for binaries
/usr/etc, used for system-wide configuration files
/usr/games
/usr/include, used for C header files
/usr/kerberos, used for Kerberos-related binaries and files
/usr/lib, used for object files and libraries that are not designed to be directly utilized by shell
scripts or users
/usr/libexec, contains small helper programs called by other programs
/usr/sbin, stores system administration binaries that do not belong to /sbin/
/usr/share, stores files that are not architecture-specific
/usr/src, stores source code
/usr/tmp -> /var/tmp
The /usr/ directory should also contain a /local/ subdirectory. As per the FHS, this subdirectory
is used by the system administrator when installing software locally, and should be safe from being
overwritten during system updates. The /usr/local directory has a structure similar to /usr/, and
contains the following subdirectories:
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/src
Red Hat Enterprise Linux's usage of /usr/local/ differs slightly from the FHS. The FHS states
that /usr/local/ should be used to store software that should remain safe from system software
upgrades. Since the RPM Package Manager can perform software upgrades safely, it is not
necessary to protect files by storing them in /usr/local/.
Instead, Red Hat Enterprise Linux uses /usr/local/ for software local to the machine. For instance,
if the /usr/ directory is mounted as a read-only NFS share from a remote host, it is still possible to
install a package or program under the /usr/local/ directory.