Which Solaris 11 Patch Level am I working on?

Solaris 11 is no longer using the SYSV package system, it uses the new IPS. IPS doesn't distinguish between packages and patches for packages. It deals with packages and their revisions only.

Patches happen to be packages with higher minor version numbers. Oracle is now pursuing a uniform approach. IPS allows to check the concise version number of a package with the command:

pkg info <package name>

This allows to check the fine grained patch revision for any given package. The individual package granularity will be an overkill for most applications. Most applications will be happy to find a minimum Oracle patch level for the entire system. A check of the kernel package is all it takes. Most other packages of the OS will depend on the kernel revision.

Oracle has a concept of making update revisions freely available through the OTN license. Patch bundles in between update release are available for customers as Support Repository Updates (SRU). These SRUs are what you will want to rely on to operate a high quality Solaris 11 environment.

It happens that Oracle has been shipping the first SRU and the pkg info commands allows to understand versioning scheme:

church1e@schlumpf:~$ pkg info kernel
          Name: system/kernel
       Summary: Core Kernel
   Description: Core operating system kernel, device drivers and other modules.
      Category: System/Core
         State: Installed
     Publisher: solaris
       Version: 0.5.11
 Build Release: 5.11
        Branch: 0.175.0.1.0.3.1
Packaging Date: November 10, 2011 06:49:35 PM 
          Size: 32.33 MB
          FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.1.0.3.1:20111110T184935Z

The relevant information can be found in the Branch or in the FMRI attribute:

@0.5.11,5.11-0.175.0.1.0.3.1:20111110T184935Z

It can be deciphered as follows:

  • 175 — The trunk identifier.This is an indicator for Solaris 11 GA. Lower build numbers are indicators of older developer releases (151: Solaris 11 Express). You will want to deploy your application on build 175. This digit is defacto frozen for Solaris 11. It documents that Oracle and Sun worked for seven years on Solaris 11 and it took them 175 builds to get it right.
  • 0 — The next 0 is indicating the update release. Solaris 11 is brand new. There hasn't been an update release. This number is likely to be incremented when update release will happen. This 0 translates into the "11/11" from the file /etc/release
  • 1 — The SRU. This is the first SRU for Solaris 11, update 0. Oracle's first patch bundle. It has been released a few days after the intial release. More of them are likely to follow. It'll take support contracts and access to the the Oracle support repositories to obtain these patches.
  • 0 — This field doesn't seem to get used
  • 3.1 — These seem to Oracle internal counters which are likely to distinguish internal builds in between SRUs. They have no relevance to regular users.

Higher SRUs levels shouldn't break anything. They're supposed to fix bugs. Higher update levels aren't supposed to break anything either. They may add new functionality without breaking old APIs.

Oracle is updating the support repositories on demand in between SRUs. Every update in the support repositories will lead to an increased version number of the package "entire".

Any software being implemented on a given Solaris 11 release will want to make sure that it requests the minimum version which is required but not more than needed.

Further reading