Recently I updated one of our lab systems running Solaris 11.3 SRU 16 to Solaris 11.4 beta. Just wanted to share my experience along with the steps I ran and the outputs/stdout/stderr messages that I captured. I followed Updating Your Operating System to Oracle Solaris 11.4 document in Solaris 11.4 documentation library and the instructions worked flawlessly without a hitch.
My target system has one non-global zone running, and it took a little over one hour to complete the upgrade from start to finish. I recommend setting at least couple of hours aside for this upgrade as various factors such as the current Solaris 11.3 SRU, number of non-global zones running, and how Solaris 11.4 Beta packages are being accessed have a direct impact on the overall time it takes to complete the upgrade exercise.
Oracle recommends that the target system is at least at Solaris 11.3 SRU 23 level for the upgrade to succeed so the first step is to make sure that the system is running Solaris 11.3 SRU 23 or later.eg.,
# pkg info entire | grep -i branch Branch: 0.175.3.16.0.3.0
The above output indicates that my lab system is running Solaris 11.3 SRU 16 - so, I have no choice but to upgrade 11.3 SRU first. Those with systems already at 11.3 SRU 23 or later can skip to Step 2: Get access to Solaris 11.4 Beta packages.
Following listing indicates that existing/configured publishers allow me to upgrade 11.3 to the latest SRU (which is 29).
# pkg list -af firstname.lastname@example.org NAME (PUBLISHER) VERSION IFO entire (solaris) 0.5.11-0.175.3.29.0.5.0 --- entire (solaris) 0.5.11-0.175.3.28.0.4.0 --- ...
An attempt to update my system to the latest SRU met with a failure.
# pkg update --be-name s11.3.sru29 pkg:/email@example.com Packages to remove: 37 Packages to install: 12 Packages to update: 510 Create boot environment: Yes Create backup boot environment: No Planning linked: 0/1 done; 1 working: zone:some-ngz Linked progress: /pkg: update failed (linked image exception(s)): A 'sync-linked' operation failed for child 'zone:some-ngz' with an unexpected return value of 1 and generated the following output: pkg sync-linked: One or more client key and certificate files have expired. Please update the configuration for the publishers or origins listed below: Publisher: solarisstudio Origin URI: https://pkg.oracle.com/solarisstudio/release/ ...
Root cause of this failure is that a seperate repo for Solaris Studio has been configured in the non-global zone. Fixed it by removing associated publisher from the non-global zone.
root@some-ngz:~# pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris (syspub) origin online T
solarisstudio (syspub) origin online T solarisstudio (syspub) origin online F https://pkg.oracle.com/solarisstudio/release/ root@some-ngz:~# pkg set-publisher -G https://pkg.oracle.com/solarisstudio/release/ solarisstudio
SRU update has no problem afterward.
# pkg update --be-name s11.3.sru29 pkg:/firstname.lastname@example.org Packages to remove: 37 Packages to install: 12 Packages to update: 510 Create boot environment: Yes Create backup boot environment: No Planning linked: 0/1 done; 1 working: zone:some-ngz Linked image 'zone:some-ngz' output: | Packages to remove: 25 | Packages to install: 12 | Packages to update: 237 | Services to change: 9 ` ... Updating image state Done Creating fast lookup database Done Executing linked: 0/1 done; 1 working: zone:some-ngz Executing linked: 1/1 done Updating package cache 3/3 A clone of s11.3.sru.16.3.0 exists and has been updated and activated. On the next boot the Boot Environment s11.3.sru29 will be mounted on '/'. Reboot when ready to switch to this updated BE.
Now that the system was upgraded to 11.3 SRU 29, it is time to boot the new boot environment (BE) in preparation for a subsequent upgrade to 11.4 beta.
# beadm list | grep sru29 s11.3.sru29 R - 98.05G static 2018-02-26 17:13 # shutdown -y -g 30 -i6 # pkg info entire | grep -i branch Branch: 0.175.3.29.0.5.0
Unless the target system has no connectivity to the public
pkg.oracle.com repo, probably the simplest way is to use the public package repository that was set up by Oracle to support 11.4 beta. If the preference is to have a local repository for any reason (say no exernal connectivity, control what gets installed for example), download the Solaris 11.4 Beta package repository file and follow the instructions in README to set up the beta repository locally.
Rest of this section shows the steps involved in getting access to the public repository.
Sign-in to Oracle Certificate Request site using your My Oracle Account support credentials
Under REPOSITORIES tab, find Oracle Solaris 11.4 Beta and click on "Request Access" button
Review the Early Adopter License Agreement and accept the license
Navigate to the Certificate Information page
Download Key & Certification by clicking on respective buttons. These files are needed while adding the public beta repository to the Solaris publisher.
pkg.oracle.com/solaris/beta location to the solaris publisher configuration on target system using the personal key and certification that were downloaded in previous step
# pkg set-publisher -c /var/tmp/pkg.oracle.com.certificate.pem \ -k /var/tmp/pkg.oracle.com.key.pem -G "*" \ -g https://pkg.oracle.com/solaris/beta solaris # pkg publisher | egrep 'PUBLISHER|beta' PUBLISHER TYPE STATUS P LOCATION solaris origin online F https://pkg.oracle.com/solaris/beta/
There should be no unrelated mirrors set up. Check by running:
pkg publisher solaris | grep Mirror
If the above command returns one or more mirrors, remove those mirrors by running:
pkg set-publisher -M http://<mirrored-site> -M http://<mirrored-site> [...] solaris
Verify that the beta repository location is configured.
# pkg publisher solaris Publisher: solaris Alias: Origin URI: https://pkg.oracle.com/solaris/beta/ ... Catalog Updated: Wed Jan 24 14:09:16 2018 Enabled: Yes
And confirm that the system can access Solaris 11.4 beta packages.
# pkg list -af entire@latest NAME (PUBLISHER) VERSION IFO entire (solaris) 11.4-18.104.22.168.0.12.1 ---
To list all packages supplied by this publisher, run
pkg list -a 'pkg://solaris/*'.
# pkg list -a 'pkg://solaris/*' NAME (PUBLISHER) VERSION IFO OSOLvpanels-hypervisor (solaris) 0.5.11-0.151 --o ... SUNWDTraceToolkit (solaris) 0.5.11-0.144 --r SUNWGlib (solaris) 1.2.10-0.169 --o ... SUNWPython (solaris) 2.4.6-0.175.0.0.0.0.0 --o SUNWPython-extra (solaris) 0.5.11-0.175.0.0.0.0.0 --o ...
Optionally perform a dry run update to check if there are any issues.
pkg update -nv
Finally perform the actual update to Solaris 11.4. This is the most time consuming step in this whole exercise.
# pkg update --accept --be-name 11.4.0 --ignore-missing \ --reject system/input-method/ibus/anthy \ --reject system/input-method/ibus/pinyin \ --reject system/input-method/ibus/sunpinyin \ --reject system/input-method/library/m17n/contrib entire@latest ... Packages to remove: 190 Packages to install: 304 Packages to update: 716 Mediators to change: 8 Create boot environment: Yes Create backup boot environment: No ...
Reboot the system to boot the new 11.4 boot environment and check the OS version.
# uname -v 11.3 # beadm list | grep R 11.4.0 R - 113.20G static 2018-02-26 20:10 # shutdown -y -g 30 -i6 # uname -v 22.214.171.124.0 # pkg info entire | grep Version Version: 11.4 (Oracle Solaris 126.96.36.199.0.12.1)