By Brian Leonard on Dec 16, 2010
In my previous entry I talked about packages that were not brought forward into the Solaris 11 Express repository. However, those packages are still available and can be installed from the opensolaris.org repository.
There's another category of packages that have technically been brought forward into the Solaris 11 Express repository, but for various reasons are now marked as obsolete. You can read a nice write-up of what it means to obsolete a package, but basically the design is to intentionally mark that a particular package is no longer supplied by the repository.The primary difference is that a "missing" package is left untouched when the system is updated. An obsolete package will be uninstalled (if possible) when the system is updated.
There are a couple of ways to see the packages that are obsolete. Using pkg search:
bleonard@solaris:~$ pkg search ::pkg.obsolete: INDEX ACTION VALUE PACKAGE pkg.obsolete set true pkg:/SUNWinleu@0.5.11-0.130 pkg.obsolete set true pkg:/SUNWsfwhea@0.5.11-0.130 pkg.obsolete set true pkg:/SUNWupdatemgr@0.5.11-0.130 pkg.obsolete set true pkg:/firstname.lastname@example.org pkg.obsolete set true pkg:/SUNWcleue@0.5.11-0.130 pkg.obsolete set true pkg:/SUNWpostgremail@example.com ...
Or using pkg list with a grep on the o flag:
bleonard@solaris:~$ pkg list -a | grep -e '[-u]-[o]--' FSWfontconfig-devel-docs 0.5.11-0.130 known --o-- FSWxorg-devel-docs 0.5.11-0.130 known --o-- FSWxwpft 0.5.11-0.130 known --o-- OSOLvpanels-hypervisor 0.5.11-0.151 known --o-- OSOLvpanels-mysql 0.5.11-0.130 known --o-- ...
I mention all of this because packages that are obsolete have some interesting side effects. The highest profile obsolete package is PostgreSQL, and you'll note it's marked Obsolete in the output of pkg info:
bleonard@solaris:~$ pkg info -r pkg://solaris/database/postgres-84 Name: database/postgres-84 Summary: State: Not installed (Obsolete) Publisher: solaris Version: 8.4.4 Build Release: 5.11 Branch: 0.146 Packaging Date: October 27, 2010 06:31:28 PM Size: 0.00 B FMRI: pkg://firstname.lastname@example.org,5.11-0.146:20101027T183128Z
And if you try to install it, you get a somewhat obscure error message:
bleonard@solaris:~$ sudo pkg install pkg://solaris/database/postgres-84 No updates necessary for this image.
The message is a little more clear if you try to install a package that depends on a package that's been marked as obsolete (I'm not aware of any such packages currently in the solaris release repository, so this example's using the opensolaris.org repository):
bleonard@solaris:~$ sudo pkg install amp-dev Creating Plan \\pkg: No version of amp-dev can be installed: pkg://email@example.com,5.11-0.86:20080424T113414Z: Required dependency pkg:/SUNWphp524firstname.lastname@example.org,5.11-0.86 is obsolete ...
I already mentioned an obsolete package will be uninstalled (if possible) when the system is updated. The if possible part is key, and it did trip up several folks trying to upgrade from OpenSolaris to Solaris 11 Express. The assumption is made that if you have a package installed that has not been marked as obsolete (such as amp-dev) that depends on a package that's been marked as obsolete (such as SUNWphp52-pgsql), you still depend on the functionality provided by the dependent package and the update is prevented.
I don't have insight as to why a particular package is marked as obsolete, however, I would assume most of it has to do with support (everything in the solaris release repository is supported). My primary point here was to shed some additional light on the concept of an obsolete package.