On Tue, Jan 14, 2020 at 05:21:40AM -0500, Josef Ridky wrote:
Does anyone know, how can I obsolete modular version of package?
I have one package (gimp) that is now available as RPM and Module at the
same time in Fedora. Due of modular version makes issues to users during
system upgrade, I've decided to remove (obsolete) modular version of gimp
and keep the RPM version only.
Question is, How can I set new RPM build to be the replacement for the
modular one? Especially, is it possible, when someone with modular gimp
installed types `dnf upgrade gimp`, that command will remove modular gimp
and installs new RPM instead?
RPM Obsolets triggers a package removal and can be placed into any package.
However, you cannot obsolete a module (i.e. disable or reset it)
programatically. This is by design an action that needs an explicit user's
consent. If you need modularity to support marking modules end-of-life,
I recommend you contacting Modularity team (psabata) that has been requested
to implement this feature for a long time.
Since any active module content masks same-named non-modular packages, you
cannot uninstall the modular gimp package by putting an Obsoletes into the
non-modular gimp package. Until the user explicitly disables the module, your
non-modular gimp will be invisible and thus the Obsoletes should not take any
But there is an solution in Fedora if your module exists in updates repository
only. Because Fedora mirrors keep only the latest module version, it should
be possible to place another package into the module, make it Obsolete and
Provide the modular gimp package. This causes DNF to replace the modular
gimp package with the another package. After that DNF should make the
non-modular gimp visible. Then you can release a non-modular gimp with higher
release than the Provided "gimp" symbol and that will obsolete the another
package. This should DNF make to replace the modular another package with your
non-modular gimp package.
But this only a theory. Maybe it won't work because of a caching of the
modular metadata somewhere.