Linked-Image Changes for r151022 and Later.

A side-effect of upgrading to Python 2.7 was updating pkg(5) to a more modern upstream from Oracle Solaris and OpenIndiana.

This changed some semantics of Linked-image zones. Linked-image zones are no longer as strictly linked to the parent (global-zone) image as they were. The -r flag in pkg(1) can be used to maintain strict child-image (non-global lipkg zone) updates. Some packages (like system/library) have explicit parent-image dependencies, which means they will still always be updated alongside the global zone. Most other packages now do not have to synchronize their child-images, or required to be in-sync with their parent images.

Here is an example between a global zone and a single linked-image non-global zone, showing that non-parent-dependent shell/bash can be updated. Note that from the global zone, the non-global zone is updated only with -r. And also note that inside the non-global zone, it can update without the parent having to do so as well.

bloody(~)[0]% zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              ipkg     shared
   1 lx0              running    /zones/lx0                     lx       excl  
   2 lx2              running    /zones/lx2                     lx       excl  
   3 lx1              running    /zones/lx1                     lx       excl  
   5 lipkg0           running    /zones/lipkg0                  lipkg    excl  
bloody(~)[0]% sudo pkg update -nv bash
            Packages to update:        1
     Estimated space available: 27.12 GB
Estimated space to be consumed: 35.35 MB
       Create boot environment:       No
Create backup boot environment:      Yes
          Rebuild boot archive:       No

Changed packages:
omnios
  shell/bash
    4.4.12-0.151021:20170418T215800Z -> 4.4.12-0.151021:20170419T204904Z

Planning linked: 0/1 done; 1 working: zone:lipkg0
Linked image 'zone:lipkg0' output:
|      Estimated space available: 483.84 GB
| Estimated space to be consumed:  34.98 MB
|           Rebuild boot archive:        No
`
Planning linked: 1/1 done
bloody(~)[0]% sudo pkg update -nvr bash
            Packages to update:        1
     Estimated space available: 27.12 GB
Estimated space to be consumed: 35.35 MB
       Create boot environment:       No
Create backup boot environment:      Yes
          Rebuild boot archive:       No

Changed packages:
omnios
  shell/bash
    4.4.12-0.151021:20170418T215800Z -> 4.4.12-0.151021:20170419T204904Z

Planning linked: 0/1 done; 1 working: zone:lipkg0
Linked image 'zone:lipkg0' output:
|             Packages to update:         1
|      Estimated space available: 483.84 GB
| Estimated space to be consumed:  35.15 MB
|           Rebuild boot archive:        No
| 
| Changed packages:
| omnios
|   shell/bash
|     4.4.12-0.151021:20170418T215800Z -> 4.4.12-0.151021:20170419T204904Z
`
Planning linked: 1/1 done
bloody(~)[0]% sudo zlogin lipkg0 pkg update -nv bash
 Startup: Refreshing catalog 'ms.omniti.com' ... Done
 Startup: Refreshing catalog 'omnios' ... Done
Planning: Solver setup ... Done (0.734s)
Planning: Running solver ... Done (0.619s)
Planning: Finding local manifests ... Done (0.007s)
Planning: Package planning ... Done (0.055s)
Planning: Merging actions ... Done (0.000s)
Planning: Checking for conflicting actions ... Done (0.122s)
Planning: Consolidating action changes ... Done (0.001s)
Planning: Evaluating mediators ... Done (0.145s)
Planning: Planning completed in 1.85 seconds
            Packages to update:         1
     Estimated space available: 483.84 GB
Estimated space to be consumed:  35.15 MB
       Create boot environment:        No
Create backup boot environment:       Yes
          Rebuild boot archive:        No

Changed packages:
omnios
  shell/bash
    4.4.12-0.151021:20170418T215800Z -> 4.4.12-0.151021:20170419T204904Z

bloody(~)[0]% 

Behavior changes

Behavior r151014-r151022 r151022 and beyond
Zone publishers Must match or be a superset of global Must match or be a superset of global
Updating child zone packages when updating global zone Implicit upgrading regardless Unless package is marked as parent-dependent (only system packages like ), implicit upgrading only if flag is used in pkg(1).
Updating child zone package when updating global zone No affect on child No affect on child