4.6. /usr/lib : Libraries for programming and packages

4.6.1. Purpose

/usr/lib includes object files and libraries. [21] On some systems, it may also include internal binaries that are not intended to be executed directly by users or shell scripts. [22]

Applications may use a single subdirectory under /usr/lib. If an application uses a subdirectory, all architecture-dependent data exclusively used by the application must be placed within that subdirectory. [23]

4.6.2. Specific Options

For historical reasons, /usr/lib/sendmail must be a symbolic link which resolves to the sendmail-compatible command provided by the system's mail transfer agent, if the latter exists. [24] [25]

[21] Miscellaneous architecture-independent application-specific static files and subdirectories must be placed in /usr/share.

[22] See below, in the /usr/libexec section, for a discussion of /usr/lib vs. /usr/libexec for executable binaries.

[23] For example, the perl5 subdirectory for Perl 5 modules and libraries.

[24] Some executable commands such as makewhatis and sendmail have also been traditionally placed in /usr/lib. makewhatis is an internal binary and must be placed in a binary directory; users access only catman. Newer sendmail binaries are now placed by default in /usr/sbin. Additionally, systems using a sendmail-compatible mail transfer agent must provide /usr/sbin/sendmail as the sendmail command, either as the executable itself or as a symlink to the appropriate executable.

[25] Host-specific data for the X Window System must not be stored in /usr/lib/X11. Host-specific configuration files such as xorg.conf must be stored in /etc/X11. This includes configuration data such as system.twmrc even if it is only made a symbolic link to a more global configuration file (probably in /usr/lib/X11).