Solaris 11 upgrade, to Solaris 11.1

I recently had the need to upgrade some Solaris 11 machines, to the newer version of Solaris, 11.1 There are instructions on oracle.com, however, I found them difficult to follow.

I've thus put together a streamlined procedure of how to get from an older Solaris 11, to the newer one.

Working from the Oracle public repository

Instructions in this section presume that you have set your solaris repository to the public repo, or some equivalent(perhaps a local one, or perhaps the support one. Doesn't matter). If you need to reset it, a quick way to replace all other solaris repos is:
# pkg publisher >~/pkg.publisher.save # pkg set-publisher -O http://pkg.oracle.com/solaris/release

Background

Solaris 11 has a magic package, that locks in the "pkg" program to only install packages associated with a particular version of Solaris. This is called the "entire" package. Check your version of it, with "pkg list entire". The output should look something like the following:
$ pkg list entire
NAME (PUBLISHER)      VERSION                   IFO
entire                0.5.11-0.175.0.13.0.4.0   i--
What you most care about, is the four fields under VERSION, to the right of 0.5.11. There are two main categories of Solaris 11 installs: Those older than "0.175.0.10", and those newer.

Requirements for older versions of Solaris 11

If your version of the "entire" package, is older than 0.175.0.10, you first have to update specifically to that version. To do that, you should use the following command:
pkg update --accept entire@0.5.11,5.11-0.175.0.10
Once this has completed, you must first reboot, before continuing on.

The next step is to update your pkg pkg. (no that's not a typo).

pkg update pkg

Once this is accomplished, you can at last move on to the final update

Requirements for more recent versions of Solaris 11

If your version of the "entire" package, is 0.175.0.10 or newer, you can in theory upgrade to Solaris 11.1, by simply doing
pkg update --accept
This will create a new BE for you, with a very generic name, unless you choose to override it with an extra pkg flag, such as "--be-name sol11_1",

Once you have done this, and rebooted, your machine should now be at Solaris 11.1, as shown by either

$ uname -v
11.1
or noticing that the output of "pkg list entire" will show a version of 0.5.11-0.175.1 or newer.

It should be noted that unlike subpoint releases like Solaris 2.5.1, the output of "uname -r" will not show the point release. You must use either "uname -v", or "uname -a", to see 11.1 mentioned anywhere.

Older Solaris 11, and downloaded repositories

Oracle allows downloading of its repositories to a local server, for those who are bandwidth constrained. There are two separate downloadable repos: 1 for "pre-0.175.0.10" systems, and then the more general solaris 11.1 repo.
Some people have had difficulty attempting to merge the two, even though it should be possible. As such, it is probably simpler to mount the update repo (sol-11_1-upgrade-repo.iso) as its own separate repo, update from that, and then change your pkg publisher configuration to point to a newer one, once that intermediate upgrade is complete.


Troubleshooting

Some errors, and solutions, I have run into:

No update happening

If you are at the correct version of "entire" (greater than 0.175.0.10), AND you have verified that your repo actually has the newer version, but "pkg update" won't show you any updates available to upgrade to Solaris 11.1 (aka rev 0.175.1), try forcing the update to the newer version, with
# pkg update --accept entire@0.5.11,5.11-0.175.1.0
### (or perhaps 0.175.1.1 now)

Complaints about dns/bind

If you see
Creating Plan \
pkg update: The installed package network/dns/bind is not permissible.
  Reject:
pkg://solaris/network/dns/bind@9.6.3.8.0,5.11-0.175.0.13.0.4.0:20121106T193942Z
This is technically a known issue, mentioned on the page above. The simplest way to fix it, particularly if you don't actively run a BIND name service, is to just remove the dns/bind package, then do the update again.
root@its-zones6:~# pkg uninstall dns/bind
root@its-zones6:~# pkg update --accept entire@0.5.11,5.11-0.175.1.0

This material is copyrighted by Philip Brown
Bolthole Top - Solaris Top - Search Bolthole.com