Package Version Numbers, why are they so important
Posted
by Chris W Beal
on Oracle Blogs
See other posts from Oracle Blogs
or by Chris W Beal
Published on Tue, 29 Nov 2011 06:44:35 -0600
Indexed on
2011/11/29
17:56 UTC
Read the original article
Hit count: 324
/Solaris
One of the design goals of IPS has been to allow people to easily move forward to a supported "Surface" of component. That is to say, when you
# pkg update
your system, you get the latest set of components which all work together, based on the packages you already have installed. During development, this has meant simply you update to the latest "build" of the components. (During development, we build everything and publish everything every two weeks).
Now we've released Solaris 11 using the IPS technologies, things are a bit more complicated. We need to be able to reflect all the types of Solaris release we are doing. For example Solaris Development builds, Solaris Update builds and "Support Repository Updates" (the replacement for patches) in the version scheme. So simply saying "151" as the build number isn't sufficient to articulate what you are running, or indeed what is available to update to
In my previous blog post I talked about creating your own package, and gave an example FMRI of
pkg://tools/[email protected],0.5.11-0.0.0
But it's probably more instructive to look at the FMRI of a Solaris package. The package "core-os" contains all the common utilities and daemons you need to use Solaris.
$ pkg info core-os Name: system/core-os Summary: Core Solaris Description: Operating system core utilities, daemons, and configuration files. Category: System/Core State: Installed Publisher: solaris Version: 0.5.11 Build Release: 5.11 Branch: 0.175.0.0.0.2.1 Packaging Date: Wed Oct 19 07:04:57 2011 Size: 25.14 MB FMRI: pkg://solaris/system/[email protected],5.11-0.175.0.0.0.2.1:20111019T070457Z
The FMRI is what we will concentrate on here. In this package "solaris" is the publisher. You can use the pkg publisher command to see where the solaris publisher gets it's bits from
$ pkg publisher PUBLISHER TYPE STATUS URI solaris origin online http://pkg.oracle.com/solaris/release/
So we can see we get solaris packages from pkg.oracle.com. The package name is system/core-os. These can be arbitrary length, just to allow you to group similar packages together. Now on the the interesting? bit, the versions, everything after the @ is part of the version. IPS will only upgrade to a "higher" version.
[email protected],5.11-0.175.0.0.0.2.1:20111019T070457Z
So from that we can see the Branch Version seems rather complex. It is necessarily so, to allow us to describe the hierachy of releases we do In this example we see the followingcore-os = Package Name
0.5.11 = Component - in this case we're saying it's a SunOS 5.11 package
, = separator
5.11 = Built on version - to indicate what OS version you built the package on
- = another separator
0.175.0.0.0.2.1 = Branch Version: = yet another separator
20111019T070457Z = Time stamp when the package was published
0.175: is known as the trunkid, and is incremented each build of a new release of Solaris. During Solaris 11 this should not change
0: is the Update release for Solaris. 0 for FCS, 1 for update 1 etc
0: is the SRU for Solaris. 0 for FCS, 1 for SRU 1 etc
0: is reserved for future use
2: Build number of the SRU
1: Nightly ID - only important for Solaris developers
Take a hypothetical example
[email protected],5.11-0.175.1.5.0.4.1:<something>
This would be build 4 of SRU 5 of Update 1 of Solaris 11
This is actually documented in a MOS article 1378134.1 Which you can read if you have a support contract.
© Oracle Blogs or respective owner