OpenSolaris

You are not signed in. Sign in or register.
Table of Contents Overview BestPractice Synopsis
CategorySoftware
OwnerSAC
AuthorPSARC
ChangesPSARC
AuthoritySAC
Policy Version1.2
StatusApproved March 23, 1999
Last ReviewedMarch, 1999
EffectiveSolaris 2.x
This document is a summary of recommendations for installation locations of package objects on Foundation Solaris 2.x.
 

Applicability

    All software that installs on Solaris


Background

    A number of Solaris platform unbundled product teams and ISVs are installing software package objects in inappropriate locations in the Solaris filesystems, despite the information available in standards and Solaris documentation. In many cases, this is due to the project teams not having a clear understanding of what kind of objects are appropriate for which installation paths on the Solaris platform.


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/


    1. 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

    Discuss at your ARC review


Appeals

    Follow the normal ARC appeal process


Interface

    Exported Interface Name Stability Classification ARC Case Comments
    filesystem locationsEvolvingPSARC/1998/374SUN NON-PROPRIETARY INFORMATION


CaseHistory

    CaseTypeName
    PSARC/1998/374OnePager Solaris Platform Installed Object Paths  
    LSARC/1992/011OnePager Name Changes for SunPro Packages and Install Directory  
    PSARC/1992/169Unknown /kernel/unix dependencies
    PSARC/1992/170Unknown /kernel directory layout
    PSARC/1992/171Unknown userland machine dependencies
    PSARC/1993/242FastTrack KBI Implementation (Phase 2)  
    PSARC/1993/271OnePager PKG REORG: Footprint Reduction  
    PSARC/1993/321OnePager KBI (Kernel Binary Interface)  
    PSARC/1993/636OnePager SHWP Certified CD install  
    PSARC/1993/638OnePager SHWP Certified CD /platform support  
    PSARC/1994/291OnePager KBI Versioning  
    PSARC/1994/331FastTrack Restructuring /var/sadm  
    PSARC/1994/400FastTrack Changes to KBI VM interfaces  
    PSARC/1994/440FastTrack Platform Definition File  
    PSARC/1994/441OnePager PSMI for PowerPC  
    PSARC/1995/028FastTrack Maintain Namespace for eeprom(1M)  
    PSARC/1995/029FastTrack Modified Implementation of Platform Dependent Executables  
    PSARC/1995/109FastTrack /usr/openwin/platform  
    PSARC/1995/422OnePager PSMI Extensions  
    PSARC/1996/039OnePager Solaris Packaging Requirements  
    PSARC/1997/310FastTrack PSMI Version 1.2  
    PSARC/1997/386FastTrack Platform Names for Solaris x86  
    PSARC/1998/231FastTrack New Algorithm for x86 Platform Name  


ManPages

    DocumentDescription
    filesystem.5 
    kernel.1M  
    isaexec.3C  


References

    System V ABI
    SPARC Compliance Definition
    "Architectural Considerations For Project Definition and Design" (TBD)