| Table of Contents | Overview | BestPractice Synopsis | |
Applicability Background Policy Exemptions Appeals Interface CaseHistory ManPages References | |||
| Category | Software | ||
| Owner | SAC | ||
| Author | PSARC | ||
| Changes | PSARC | ||
| Authority | SAC | ||
| Policy Version | 1.2 | ||
| Status | Approved March 23, 1999 | ||
| Last Reviewed | March, 1999 | ||
| Effective | Solaris 2.x | ||
| This document is a summary of recommendations for installation locations of package objects on Foundation Solaris 2.x. | |||
Applicability
Background
BestPractice
- Applies to All software installed on Solaris
- Authority SAC
- Approval PSARC 1998/374 1998/09/30
- Effective Solaris 2.x
- Policy This project documents what the ARCs have approved for standard directories in the Solaris Foundation filesystems and what can be found in the System V ABI documentation. It is assumed that the information this project provides will be publically posted (perhaps to enhance the filesystem(5) manpage) and used by the ARCs and SCs in guiding project teams.
- Details The following table is a summary of recommendations for installation locations of package objects on Foundation Solaris 2.x.
The Installation Location for Bundled Foundation Solaris software column contains the locations by which Solaris diversity can be delivered either as add-on application software or as add-on system modules.
Platform in the definitions below refers to the Instruction Set Architecture (ISA) or processor type (uname -p).
Platform-specific in the definitions below generally refers to the specific hardware implementation (uname -i).
System Software is defined to be software required for initial installation and/or booting of a system and to provide a sufficient execution environment for additional software.
Add On Software is all other software not required at initial system installation or boot to provide a fully operational system environment. For additional details on Solaris directory structure and filesystem organization, see filesystem(5).
| Type of File | Installation Location for | |
|---|---|---|
| Bundled Foundation Solaris software | Add-on system software or applications | |
| Platform dependent [1] modules required for boot. (see kernel(1M)) | /kernel/ | /kernel/ (system software only) |
| SPARC 64-bit Platform dependent modules required for boot [Solaris 2.7 and beyond] | /kernel/subsystem/sparcv9/ | /kernel/subsystem/sparcv9/ (system software only) |
| Intel IA64 64-bit Platform dependent modules required for boot [Solaris future] | /kernel/subsystem/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | /kernel/subsystem/ia64/ (system software only) (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent configuration files for the system node and not shared between systems | /etc/ | /etc/opt/$PKG/ |
| Platform dependent subsystem configuration files for the system node and not shared between systems | /etc/subsystem/ | /etc/opt/$PKG/ |
| non-permanent temporary files created by the system | /etc/volatile/ | /etc/volatile/ (system software only) |
| Essential executables used in the booting process and in manual system recovery. The full complement of utilities is available only after /usr is mounted. | /sbin/ | /opt/$PKG/sbin/ Not Applicable since one cannot assume that /opt is part of the root filesystem. |
| non-permanent (contents cleared during system boot) temporary files created by applications | /tmp/ | /tmp/ |
| This directory contains files installed by add-on software application packages | Should not be Applicable | /opt/ |
| system or node specific changing files (logs, databases) | /var/ | /var/opt/$PKG/ |
| status log files produced by software management functions and/or applications. E.g., log files produced for product installation. | /var/sadm/system/logs/ | /var/sadm/system/logs/ |
| files that vary in size or presence during normal system operations created by application packages | Not Applicable | /var/opt/ |
| files that vary in size or presence during normal system operations created by applications. Contents are preserved across the system boot operation. | /var/tmp/ | /var/tmp/ |
| Platform-specific[2] modules required for boot | /platform/`uname -i`/kernel/[3] | /platform/`uname -i`/kernel/ (system software only) |
| SPARC 64-bit Platform-specific modules required for boot [Solaris 2.7 and beyond] | /platform/`uname -i`/kernel/subsystem/sparcv9/ | Not Applicable |
| Intel IA64 64-bit Platform dependent modules required for boot [Solaris future] | /platform/`uname -i`/kernel/subsystem/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | Not Applicable |
| Hardware class specific modules required for boot | /platform/`uname -m`/kernel/ | /platform/`uname -m`/kernel/ (system software only) |
| Platform-specific shared objects required for boot | /platform/`uname -i`/lib/ | /platform/`uname -i`/lib/ (system software only) |
| Platform-specific administrative utilities required for boot | ||
| /platform/`uname -i`/sbin/ | /platform/`uname -i`/sbin/ (system software only) | |
| usr platform dependent loadable modules | /usr/kernel/ | Not Applicable |
| usr platform-specific modules | /usr/platform/`uname -i`/kernel/ | /usr/platform/`uname -i`/kernel/ (system software only) |
| Platform-specific daemon and shared objects | /usr/platform/`uname -i`/lib/ | /usr/platform/`uname -i`/lib/ (system software only) |
| SPARC 64-bit Platform-specific daemon and shared objects [Solaris 2.7 and beyond] | /usr/platform/`uname -i`/lib/sparcv9/ | /usr/platform/`uname -i`/lib/sparcv9/ (system software only) |
| Intel IA64 64-bit Platform-specific daemon and shared objects [Solaris future] | /usr/platform/`uname -i`/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | /usr/platform/`uname -i`/lib/ia64 (system software only) (NOTE: "ia64" is an example; the actual name may be different) |
| Platform-specific System administration utilities | /usr/platform/`uname -i`/sbin/ | /usr/platform/`uname -i`/sbin/ (system software only) |
| Platform-specific System (sys, vm) header files | /usr/platform/`uname -i`/include/ | /usr/platform/`uname -i`/include/ (system software only) |
| Platform-specific System manual pages for documenting platform- specific shared objects, administration utilities, configuration files, special files/modules, and header files | /usr/platform/`uname -i`/[s]man/ /usr/platform/`uname -i`/[s]man/[s]man3x/ /usr/platform/`uname -i`/[s]man/[s]man1m/ /usr/platform/`uname -i`/[s]man/[s]man4/ /usr/platform/`uname -i`/[s]man/[s]man7d/ /usr/platform/`uname -i`/[s]man/[s]man9e/ | /usr/platform/`uname -i`/[s]man (system software only) platform-specific shared objects platform-specific utilities platform-specific file formats platform-specific special files platform-specific device headers |
| Platform dependent user-invoked executables; commands expected to be run users as part of their normal PATH. | /usr/bin/ All user-level commands should be run out of this directory. For executable that have to be different on a 64-bit system than on a 32-bit system, a wrapper that selects the appropriate executable is placed here. See isaexec(3C). | /opt/$PKG/bin/ |
| SPARC 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris 2.7 and beyond] | /usr/bin/sparcv9/ see isaexec(3C). Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate. | /opt/$PKG/bin/sparcv9/ |
| Intel IA64 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris future] | /usr/bin/ia64/ see isaexec(3C) (NOTE: "ia64" is an example; the actual name may be different) Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate. | /opt/$PKG/bin/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent subsystem user-invoked executables; commands expected to be run users as part of their normal PATH | /usr/bin/subsystem[4]/ see isaexec(3C). | /opt/$PKG/bin/ |
| SPARC 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris 2.7 and beyond] | /usr/bin/subsystem[4]/sparcv9/ see isaexec(3C) Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate. | /opt/$PKG/bin/sparcv9/ |
| Intel IA64 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris future] | /usr/bin/subsystem[4]/ia64/ see isaexec(3C) (NOTE: "ia64" is an example; the actual name may be different) Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate | /opt/$PKG/bin/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent subsystem user-invoked executables; commands expected to be run users as part of their normal PATH | ||
| /usr/subsystem[4]/bin/ see isaexec(3C) | /opt/$PKG/bin/ | |
| SPARC 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris 2.7 and beyond] | /usr/subsystem[4]/bin/sparcv9/ see isaexec(3C) Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate | /opt/$PKG/bin/sparcv9/ |
| Intel IA64 64-bit Platform dependent user-invoked executables that have to be different on a 64-bit system. [Solaris future] | /usr/subsystem[4]/bin/ia64/ see isaexec(3C) (NOTE: "ia64" is an example; the actual name may be different) Note that this directory shall not be part of the user's PATH, as the user should never directly invoke an executable in this directory; rather the identically-named wrapper in /usr/bin is invoked and that in turn invokes the executable in this directory, when appropriate | /opt/$PKG/bin/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/lib/ | /opt/$PKG/lib/ |
| SPARC 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/lib/sparcv9/ | /opt/$PKG/lib/sparcv9/ |
| Intel IA64 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | /opt/$PKG/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent subsystem extensions; libraries, commands, daemons, never directly executed by a human | /usr/lib/subsystem[4]/ | /opt/$PKG/lib/ |
| SPARC 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/lib/subsystem[4]/sparcv9/ | /opt/$PKG/lib/sparcv9/ |
| Intel IA64 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/lib/subsystem[4]/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | /opt/$PKG/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent subsystem extensions; libraries, commands, daemons, never directly executed by a human | /usr/subsystem[4]/lib/ | /opt/$PKG/lib/ |
| SPARC 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/subsystem[4]/lib/sparcv9/ | /opt/$PKG/lib/sparcv9/ |
| Intel IA64 64-bit Platform dependent libraries, commands, daemons, never directly executed by a human | /usr/subsystem[4]/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) | /opt/$PKG/lib/ia64/ (NOTE: "ia64" is an example; the actual name may be different) |
| Platform dependent system administration utilities expected to be run only by administrators | /usr/sbin/ | /opt/$PKG/sbin/ |
| Platform dependent system administration subsystem utilities expected to be run only by administrators | /usr/sbin/subsystem[4]/ | /opt/$PKG/sbin/ |
| Platform dependent system administration subsystem utilities expected to be run only by administrators | /usr/subsystem[4]/sbin/ | /opt/$PKG/sbin/ |
| platform independent[5] sharable files | /usr/share/ | Not Applicable |
| platform independent sharable databases | /usr/share/lib/ | Not Applicable |
| platform independent sharable manual pages | /usr/share/[s]man/ | /opt/$PKG/[s]man/ |
- A platform dependent file is one that is installed on all platforms, but whose contents vary depending on the platform in question.
Executable files are the classic platform dependent file, but there can also be platform dependent shell scripts or configuration files.
One example is /kernel/genunix.
2. A platform specific file is one that is only installed on a subset of the supported platforms. Platform specific files can be further sub-divided into platform dependent and platform independent. A platform specific platform independent file is one that is only present on some platforms, but is always the same (if it is present).
A platform specific platform dependent file is only present on some platforms, and its contents differ on different platforms.
3. The minimal default kernel search path is
/platform/`uname -i`/kernel:/kernel:/usr/kernel,
but some systems may have a search path of
/platform/`uname -i`/kernel:/platform/`uname -m`/kernel:/kernel:/usr/kernel.
See kernel(1M) for details.
4. There is no recommended convention to use for a given subsystem, but a single subsystem should not mix conventions of /usr/*/subsystem and /usr/subsystem/*.
5. A platform independent file is one that is installed on all platforms, and whose contents are the same on all platforms. Portable shell scripts, standard configuration files, and manual page sources are common examples of platform independent files.
Exemptions
Appeals
Interface
| Exported Interface Name | Stability Classification | ARC Case | Comments |
| filesystem locations | Evolving | PSARC/1998/374 | SUN NON-PROPRIETARY INFORMATION |
CaseHistory
| Case | Type | Name |
|---|---|---|
| PSARC/1998/374 | OnePager | Solaris Platform Installed Object Paths |
| LSARC/1992/011 | OnePager | Name Changes for SunPro Packages and Install Directory |
| PSARC/1992/169 | Unknown | /kernel/unix dependencies |
| PSARC/1992/170 | Unknown | /kernel directory layout |
| PSARC/1992/171 | Unknown | userland machine dependencies |
| PSARC/1993/242 | FastTrack | KBI Implementation (Phase 2) |
| PSARC/1993/271 | OnePager | PKG REORG: Footprint Reduction |
| PSARC/1993/321 | OnePager | KBI (Kernel Binary Interface) |
| PSARC/1993/636 | OnePager | SHWP Certified CD install |
| PSARC/1993/638 | OnePager | SHWP Certified CD /platform support |
| PSARC/1994/291 | OnePager | KBI Versioning |
| PSARC/1994/331 | FastTrack | Restructuring /var/sadm |
| PSARC/1994/400 | FastTrack | Changes to KBI VM interfaces |
| PSARC/1994/440 | FastTrack | Platform Definition File |
| PSARC/1994/441 | OnePager | PSMI for PowerPC |
| PSARC/1995/028 | FastTrack | Maintain Namespace for eeprom(1M) |
| PSARC/1995/029 | FastTrack | Modified Implementation of Platform Dependent Executables |
| PSARC/1995/109 | FastTrack | /usr/openwin/platform |
| PSARC/1995/422 | OnePager | PSMI Extensions |
| PSARC/1996/039 | OnePager | Solaris Packaging Requirements |
| PSARC/1997/310 | FastTrack | PSMI Version 1.2 |
| PSARC/1997/386 | FastTrack | Platform Names for Solaris x86 |
| PSARC/1998/231 | FastTrack | New Algorithm for x86 Platform Name |
ManPages
| Document | Description |
|---|---|
| filesystem.5 | |
| kernel.1M | |
| isaexec.3C |