Understanding Oracle Solaris 11 Package Versioning

by Glynn Foster

How to interpret IPS package versioning using Oracle Solaris 11 to understand the state of software installed on your systems.


Published June 2014


Oracle Solaris 11 uses a new network-based packaging system called the Image Packaging System to manage the complete software lifecycle—including the installation, upgrade, and removal of software packages. This article summarizes how to interpret package versioning using Oracle Solaris 11 so you can better understand the state of software installed on your systems.

Want to comment on this article? Post the link on Facebook's OTN Garage page.  Have a similar article to share? Bring it up on Facebook or Twitter and let's discuss.

Showing a Package Version

Oracle Solaris 11 uses package constraints, called incorporations, to control different versions of software installed on the system. This ensures that the state of the system is consistent and, more importantly, that a set of package versions has been tested by Oracle and that the package versions work well together.

A package called entire is the primary incorporation package that determines the overall state of a system. We can take a look at the version of the entire incorporation package using the pkg info command, as shown in Listing 1:

root@solaris:~# pkg info entire
          Name: entire
       Summary: entire incorporation including Support Repository Update (Oracle Solaris 11.1.20.5.0).
   Description: This package constrains system package versions to the same
                build.  WARNING: Proper system update and correct package
                selection depend on the presence of this incorporation.
                Removing this package will result in an unsupported system.  For
                more information see https://support.oracle.com/CSP/main/article
                ?cmd=show&type=NOT&doctype=REFERENCE&id=1501435.1.
      Category: Meta Packages/Incorporations
         State: Installed
     Publisher: solaris
       Version: 0.5.11 (Oracle Solaris 11.1.20.5.0)
 Build Release: 5.11
        Branch: 0.175.1.20.0.5.0
Packaging Date: June 13, 2014 04:23:23 PM 
          Size: 5.46 kB
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.1.20.0.5.0:20140613T162323Z

Listing 1

From the output in Listing 1, we can see that the version installed on this system is Oracle Solaris 11.1.20.5.0. What this translates to is that it is a system based on Oracle Solaris 11.1 that has been updated with a Support Repository Update (SRU). SRUs are monthly updates Oracle provides to supported customers, which fix bugs, provide security alerts, or provide support for new hardware.

Breaking Down the Package FMRI

The package Fault Management Resource Identifier (FMRI) is a unique string that describes a package version. The package FMRI for the entire package is pkg://solaris/entire@0.5.11,5.11-0.175.1.20.0.5.0:20140613T162323Z.

The FMRI can be generalized into the elements shown in Listing 2:

pkg://<publisher>/<name>@<component_version>,<release>-<branch_version>:<timestamp>

Listing 2

If we use the generalized form shown in Listing 2 and break down the entire package FMRI, we get the elements shown in Table 1.

Table 1. FMRI elements
FMRI Segment Value Description
publisher solaris Publisher
name entire Package name
component_version 0.5.11 Component version
release 5.11 Release version, for example, Oracle Solaris 11
branch_version 0.175.1.20.0.5.0 Branch version
timestamp 20140613T162323Z Package time stamp (ISO 8601 UTC format)

We can also further break down the branch_version (0.175.1.20.0.5.0 for the entire package) as shown in Listing 3:

<trunk_id>.<update>.<sru>.<reserved>.<buildid>.<nightly_id>

Listing 3

Using the form in Listing 3 with entire, we get the elements shown in Table 2:

Table 2. More FMRI elements
FMRI Segment Value Description
trunk_id 0.175 Build number of development gate
update 1 Update version, for example, Oracle Solaris 11.1
sru 20 SRU version
reserved 0 Reserved (not currently used)
buildid 5 Build number of SRU
nightly_id 0 Nightly build number

So in summary, this system is installed with Oracle Solaris 11.1 SRU 20.5.

Package Versions with Interim Diagnostic Reliefs

Interim Diagnostic Reliefs (IDRs) are essentially package updates that help diagnose customer issues or provide temporary relief for a problem until a formal package update has been issued. Usually they are applied by a single customer and made available only through a standalone package archive (as indicated by a .p5p file name extension). In the event that an IDR fix is applied, a package version might have two additional elements included in the branch_version, as follows:

<trunk_id>.<update>.<sru>.<reserved>.<buildid>.<nightly_id>.<idr>.<idr_id>

You can see whether any IDRs have been applied to a system by using the pkg list command, as follows:

root@solaris:~# pkg list idr*
NAME (PUBLISHER)                       VERSION                    IFO
idr104                                 1                          i--

Assuming an IDR has been formally fixed and released as part of a subsequent SRU release, when you do a pkg update to get to this new SRU, the IDR will automatically be backed out.

Additional Resources

More information about managing Oracle Solaris 11 software can be found in the following resources on My Oracle Support:

  • "The Oracle Solaris 11 Package Branch Version Scheme" (1378134.1)
  • "Oracle Solaris 11.1 Support Repository Updates (SRU) Index" (1501435.1)
  • "Managing Interim Diagnostic Relief (IDR) packages with Oracle Solaris 11" (1537514.1)
  • "How to install IDRs (.p5p based) on Oracle Solaris 11" (1452392.1)

And here are some additional Oracle Solaris resources:

About the Author

Glynn Foster is a principal product manager for Oracle Solaris. He is responsible for a number of technology areas including OpenStack, the Oracle Solaris Image Packaging System, installation, and configuration management.

Revision 1.0, 06/25/2014

Follow us:
Blog | Facebook | Twitter | YouTube