On Tue, Jan 14, 2020 at 6:01 AM Petr Pisar <ppisar(a)redhat.com> wrote:
On Tue, Jan 14, 2020 at 05:21:40AM -0500, Josef Ridky wrote:
> Hi folks,
>
> Does anyone know, how can I obsolete modular version of package?
>
> TL;DR
>
> 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.
I still can't believe that anyone thought this was okay... :(
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
effect.
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.
This theory doesn't work if your module had defaults because all the
YAML documents are downloaded and applied to DNF locally. If it
didn't, then it'd work.
--
真実はいつも一つ!/ Always, there's only one truth!