At present, we have two distinct operations:
pkg install, which can add packages to a system, or change the installed version to a specific (perhaps older!) version or even a version from a specific other publisher
pkg uninstall, which removes packages from the system
Sometimes, when trying to move between production and development bits, it seems that it can be impossible to get from the current state to an intended target state because these two distinct operations may require the transition through an illegal state to get to the legal target state. For example:
- a new package (say,
newthing) was added to a development version of illumos-gate, which is depended upon by SUNWcs, and version-locked through osnet-incorporation
- we want to go back to regular illumos packages, so we use a fully-qualified FMRI for
osnet-incorporation
- there is no acceptable version of
newthing that can be installed, now, because it only exists in the version of the OS bits that we already have
What we would like to be able to do is something like:
pkg modify -v +osnet-incorporation@$oldversion -newthing
This would attempt, as a single operation, to change the osnet-incorporation version (which would also end up changing the version of most OS packages like SUNWcs) and concurrently remove newthing from the image. The target state should then be legal, and there should be no need to move through an invalid intermediate state to get there.
At present, we have two distinct operations:
pkg install, which can add packages to a system, or change the installed version to a specific (perhaps older!) version or even a version from a specific other publisherpkg uninstall, which removes packages from the systemSometimes, when trying to move between production and development bits, it seems that it can be impossible to get from the current state to an intended target state because these two distinct operations may require the transition through an illegal state to get to the legal target state. For example:
newthing) was added to a development version of illumos-gate, which is depended upon bySUNWcs, and version-locked throughosnet-incorporationosnet-incorporationnewthingthat can be installed, now, because it only exists in the version of the OS bits that we already haveWhat we would like to be able to do is something like:
This would attempt, as a single operation, to change the
osnet-incorporationversion (which would also end up changing the version of most OS packages likeSUNWcs) and concurrently removenewthingfrom the image. The target state should then be legal, and there should be no need to move through an invalid intermediate state to get there.