I have a Solaris 11.3 system without (presently) a support contract. I am therefore using the IPS repository at http://pkg.oracle.com/solaris/release/, which I have now mirrored locally using pkgrecv
.
I am using pkg change-facet
to change version-lock
to false on a large number of packages, such that I can update these packages to their latest version. This works fine.
The 'issue' is that these changed facets are not being inherited by my non-global zones. So while in the global zone I see the changed facet, and can upgrade the affected packages, the same is not true in any non-global zone I later create: it shows the original, unchanged facet, and cannot upgrade the affected packages.
pkg(5)
indicates that changes to facets are inherited by child images, such as a non-global zone inheriting from a global zone. But this is not happening for me.
Initially I thought this was a problem, but after further reflection I've realised that in fact I probably wouldn't want facet changes in the global to always inherit into non-globals. This was proved to me when shortly afterwards I found I wanted to install test zones with base software, without changing these facets.
Nonetheless, I'm still confused by the documentation indicating they do inherit, and I believe that ideally there should be a way to configure certain facets to inherit.
Therefore, my questions are:
- Is there a way to optionally make certain facets inherit into all non-globals - perhaps by creating a new IPS image?
- Why does the IPS documentation indicate facets do inherit - is it talking about only certain types of facets?
This is what I am doing in full:
I have been investigating the use of the new FOSS packages that Oracle provides. I have been following the guide here: How to access selected FOSS Evaluation packages for Oracle Solaris 11.3.
This guide explains that it is necessary to change the facet version-lock
to false before packages can be updated, and that updated FOSS packages can be found in bulk in the Release repo with a version number string matching \*@\*-5.12.0.0.0.122
. The document recommends manipulating the output of pkg list
to create pkg change-facet
commands to unlock all versions.
I have done this in my global zone, and subsequently doing pkg update --accept
successfully results in a large number of upgraded packages.
But if I then install a new non-global zone, it will default to the base version for these packages. If in that global zone I run pkg facet
, I will see the facets are unchanged in the zone. For example, here a zone shows the unchanged version-lock=True for Bash:
root@goldenzone:~# pkg facet -a | grep version-lock.shell/bash
version-lock.shell/bash True system
Whereas its global shows the correct, newly changed version-lock=False:
root@magrathea:/system/zones# pkg facet -a | grep version-lock.shell/bash
version-lock.shell/bash False local
Workaround:
As per my comment below, I am now solving this issue by installing my golden zone with custom auto_install manifest that includes <facet set="false">facet.version-lock.*</facet>
.
This works OK (albeit at the cost of unlocking all version locks, rather than only those that have FOSS updates), but it would still be good to know if there is a way to make facets inherit between globals and non-globals, as the documentation seems to indicate they should.
Thanks in advance.