By Gerry Haskins-Oracle on Jan 04, 2008
The following applies to core Solaris packages and patches. It does not necessarily apply to some applications embedded in Solaris, such as StarOffice.
Each marketing release of Solaris has it's own set of patches.
That is, there's one set of patches for Solaris 8, a separate set of patches for Solaris 9, and another set of patches for Solaris 10.
But the same set of patches will apply to all update releases of a Solaris marketing release.
Taking Solaris 10 as an example, the same Solaris 10 patches will apply to the original Solaris 10 03/05 release, Solaris 10 HW1, Solaris 10 HW2, Solaris 10 1/06 (Update 1), Solaris 10 6/06 (Update 2), Solaris 10 11/06 (Update 3), and Solaris 10 8/07 (Update 4).
The package version of core Solaris packages remains unchanged throughout the supported life of a Solaris marketing release.
For example, the package version of SUNWcsr is the same in the original Solaris 10 03/05, the latest Solaris 10 8/07 releases, and all releases in between. Looking at the relevant entries /var/sadm/pkg/SUNWcsr/pkginfo on an installed Solaris 10 x86 system, we see:
NAME=Core Solaris, (Root)
Effectively, there's a single customer-visible code branch for each Solaris marketing release.
This means that new code changes, including new bug fixes, are made to the tip of the source tree for each Solaris marketing release.
All changes to pre-existing packages for each Solaris marketing release, whether bug fixes, feature enhancements, or new features, must therefore be delivered as patches.
The advantage of this approach is that it allows Sun to provide long-term, high quality support for each Solaris marketing release at a reasonable cost. It also has the advantage that customers can apply the same set of patches to all their systems to bring them to the same patch level, irrespective of which update releases of a Solaris marketing release are installed on them.
To get a new bug fix made to the tip of the source tree, implies that customers will also be getting any preceding code changes to the same area of code.
[The above is a simplification. Within Sun, there are temporary multiple source code branches to protect the stability of the source tree from new, potentially immature, feature code.]
For example, if a bug fix is made today to libc.so, it will be on top of all preceding changes to libc.so, irrespective of whether those changes were due to other bug fixes or feature enhancements. Therefore, the resultant patch which contains the latest bug fix will contain a mixture of bug fix and feature code. In the current Solaris source control model, it is not possible to get one without the other.
Some features may be entirely contained in patches - e.g. ZFS. This means that customers on early releases of Solaris 10, such as Solaris 10 03/05 can install a set of patches to get the ZFS feature. (ZFS was first shipped as part of Solaris 10 6/06 (Update 2). Obviously, it's also contained in all subsequent Solaris 10 update releases, as update releases are cumulative.)
Other new features may also introduce new packages. These new packages are typically only available by installing or upgrading to the appropriate Solaris Update release, e.g. Solaris 10 8/07.
All available Solaris patches are included in the next Solaris Update release. These are pre-applied to the Solaris install image in a process called "freshbitting". This ensures that each Solaris Update release has all the bug fixes which were available at the time the Update was built, thus increasing the quality of each successive Solaris Update release. Pre-applying the patches into the Solaris Update release image saves customers, who have installed or upgraded to that Solaris Update release, the time and expense of applying such patches using the Solaris patchadd utility.
Note, new patches may become available after a Solaris Update release was finalized, so customers should check for applicable critical new patches - see the appropriate Recommended Patch Cluster or Sun Alert Patch Cluster on the SunSolve "Patches and Updates" page, which are available to customers with a valid Solaris Subscription or Sun System Service Plan. Such pre-applied patches will be listed as normal by the 'patchadd -p' and 'showrev -p' commands on an installed system. The only difference is that since such patches are pre-applied, they cannot be removed (i.e. backed out).
Also, as noted in the A Bug's Lifecycle presentation mentioned previously, each bug fix and feature is first made to the current marketing release of Solaris under development (i.e. the next Solaris marketing release after Solaris 10, codenamed "Nevada" ). Including all bug fixes in the next Solaris marketing release ensures that each successive marketing release of Solaris is of higher quality than the last release. Only after the code change has successfully completed testing in the next Solaris marketing release, is it permitted to be back-ported to the currently shipping Solaris marketing releases where the code change is again tested before it is released. This process of "soak-testing" code changes in the next marketing release under development prior to allowing them to be back-ported helps protect the quality and stability of the Solaris marketing releases which are currently shipping by ensuring code changes are test prior to being putback to the source code base. Additional, Pre-Integration Testing is also performed to ensure the code changes don't regress functionality.
Solaris 8, 9, and 10 are the currently supported Solaris marketing releases.
Only the latest marketing release, Solaris 10, will have further periodic Update releases, the last such being Solaris 10 8/07 (Update 4). The Solaris Updates facilitate the release of cool new features such as NewBoot (GRUB), ZFS, Trusted Solaris Extensions, Secure By Default, etc.
No further Update releases are planned for Solaris 8 or Solaris 9. These releases are now in pure sustaining mode - i.e. bug fixes and very limited enhancements only. These older releases can be advantageous from a risk minimization perspective, as they are subject to less code change than the current release, which is taking in new features as well as bug fixes. The downside of remaining on these older releases is that do not contain Solaris 10's cool new software features, significant performance enhancements, and support for (quite literally) cool new hardware.
To get the latest bug fixes, customers can either apply patches, or Install or Upgrade to the latest Solaris Update release which, as mentioned previously, contains all the bug fixes which were available at the time it was built. I'll explore later why installing or upgrading to the latest Solaris Update release can be beneficial from a risk minimization perspective, especially on Solaris 10.
For customers who are already on the latest Solaris 8 or Solaris 9 Update Release, the only way to get new bug fixes is through applying patches as no more Update Releases are planned for these marketing releases.