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, updated July 2018


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? 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.3.32.4.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/rs?type=doc&id=2045311.1
         Category: Meta Packages/Incorporations
            State: Installed
        Publisher: solaris
          Version: 0.5.11 (Oracle Solaris 11.3.32.4.0)
    Build Release: 5.11
           Branch: 0.175.3.32.0.4.0
   Packaging Date: Fri Apr 27 23:24:05 2018
             Size: 5.46 kB
             FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.3.32.0.4.0:20180427T232405Z

Listing 1 - Package Information Oracle Solaris 11.3

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

As of Oracle Solaris 11.4 the versioning was slightly tweaked. Listing 2 shows example output of the pkg info command:

root@solaris:~# pkg info entire
             Name: entire
          Summary: Incorporation to lock all system packages to the same build
      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.
         Category: Meta Packages/Incorporations
            State: Installed
        Publisher: solaris
          Version: 11.4 (Oracle Solaris 11.4.0.0.1.10.0)
           Branch: 11.4.0.0.1.10.0
   Packaging Date: Mon Jul 02 17:33:43 2018
Last Install Time: Wed Jul 11 03:16:23 2018
             Size: 2.53 kB
             FMRI: pkg://solaris/entire@11.4-11.4.0.0.1.10.0:20180702T173343Z

Listing 2 - Package Information Oracle Solaris 11.4

As you can see the output has been simplified for easier reading. Further explanation can be found below.

Breaking Down the Package FMRI

The package Fault Management Resource Identifier (FMRI) is a unique string that describes a package version. As stated above, the structure of the FMRI was slightly changed between Oracle Solaris 11.3 and Oracle Solaris 11.4. 

Oracle Solaris 11.3 and older

In Oracle Solaris 11.3 and earlier the package FMRI for the entire package is like pkg://solaris/entire@0.5.11,5.11-0.175.3.32.0.4.0:20180427T232405Z.

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

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

Listing 3

If we use the generalized form shown in Listing 2a 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.3.32.0.4.0 Branch version
timestamp 20180427T232405Z Package time stamp (ISO 8601 UTC format)

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

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

Listing 4

Using the form in Listing 4 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 3 Update version, for example, Oracle Solaris 11.3
sru 32 SRU version
reserved 0 Reserved (not currently used)
buildid 4 Build number of SRU
nightly_id 0 Nightly build number

So in summary, this system is installed with Oracle Solaris 11.3 SRU 32.4. Note that in this case the component_version and the release are very similar because the version of entire and the version of Oracle Solaris are linked. For most components, especially FOSS components, this will not be the case. There the component_version will reflect the version of the software in question and the release will reflect the version of Oracle Solaris this software version first shipped with.

Oracle Solaris 11.4 and newer

In Oracle Solaris 11.4 and newer the package FMRI for the entire package is like pkg://solaris/entire@11.4-11.4.0.0.1.10.0:20180702T173343Z.

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

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

Listing 5

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

Table 3. FMRI elements
FMRI Segment Value Description
publisher solaris Publisher
name entire Package name
component_version 11.4 Component version
branch_version 11.4.0.0.1.10.0 Branch version
timestamp 20180702T173343Z Package time stamp (ISO 8601 UTC format)

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

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

Listing 6

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
minor 11 The version of Oracle Solaris
update 4 Update version, for example, Oracle Solaris 11.4
sru 0 SRU version
order 0 Reserved (for internal use)
platform 1 Reserved (for internal use)
buildid 10 Build number of SRU
nightly_id 0 Nightly build number

So in summary, this system is installed with Oracle Solaris 11.4 with no SRU installed.

Note that here too in this example the component_version and the first part of the branch_version are the same because in this case we're looking at the entire package. In many case this will not be the case and the component_version will reflect the version of the software you'd install or have installed, and the branch_version the version of Oracle Solaris that this software was first released in. For example the FMRI of the Git package in this version of Oracle Solaris 11.4 is pkg://solaris/developer/versioning/git@2.15.2-11.4.0.0.1.9.0:20180618T171726Z, showing the version of Git is 2.15.2 and it was last updated in build 9 of Oracle Solaris, and as we saw earlier we have build 10 installed.

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, for Oracle Solaris 11.3 and earlier this could be as follows:

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

For Oracle Solaris 11.4 and newer you'd get a similar extension to the branch version.


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.3 Support Repository Updates (SRU) Index" (2045311.1)
  • "Interim Diagnostic or Relief (IDR)" (1019471.1)
  • "How to Install & Remove IDRs with pkg on Solaris 11 and Later Releases" (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.1, 07/23/2018
Revision 1.0, 06/25/2014

Follow us:
Blog | Facebook | Twitter | YouTube