How can I upgrade packages from @fedora-modular to @updates?


I once installed nodejs from Fedora modular to try, but removed it afterwards. As you can see, I have no modules installed now:

$ sudo dnf module list --installed
Last metadata expiration check: 2:38:42 ago on 2022-09-28T18:13:01 CEST.

But, somehow, it seems some packages stuck around:

$ sudo dnf repo-pkgs fedora-modular list installed
Installed Packages
c-ares.x86_64                             1.17.2-2.module_f36+13930+82e25793                           @fedora-modular
libnghttp2.x86_64                         1.47.0-1.module_f36+13930+82e25793                           @fedora-modular
libuv.x86_64                              1:1.43.0-3.module_f36+13930+82e25793                         @fedora-modular

I’d like to get rid of those packages. For example, libuv is outdated and I need to use the latest version for other software to work as expected.

The problem is that I’m not even sure how to replace those packages with the versions available from the @updates repo. I have tried to reinstall forcing the updates repo without luck:

$ sudo dnf reinstall libuv --repo updates
Last metadata expiration check: 2:41:30 ago on 2022-09-28T18:12:58 CEST.
Installed package libuv-1:1.43.0-3.module_f36+13930+82e25793.x86_64 (from fedora-modular) not available.
Error: No packages marked for reinstall.

I can remove libuv and reinstall it again (it will just force me to uninstall some other dependencies that I can install afterwards), but it seems I cannot remove the other 2 packages:

$ sudo dnf remove libnghttp2 c-ares
 Problem: The operation would result in removing the following protected packages: NetworkManager
(try to add '--skip-broken' to skip uninstallable packages)

How can I get rid of those modular packages and make sure to use the latest versions from updates repository instead? (and without breaking my system) :smile:

Hi Miguel,

I don’t remember ever having a similar problem, but I think that you can switch to the regular rpms by first disabling the module stream you had enabled (for F36 that could be nodejs:14, nodejs:16 or nodejs:18). You can see which one it is with dnf module list --enabled. At that point, I suppose that a dnf reinstall <package> would fetch the corresponding rpm.

You also may want to run dnf repolist and if it shows ‘fedora-modular’ and/or ‘updates-modular’ repos, then you should disable those repos to prevent dnf from using anything from there.

For a single command you could use --disablerepo fedora-modular or for a permanent disable use dnf config-manager --disable fedora-modular

Thanks @alexpl, I made sure the module streams were disabled. The reinstall command still has the same effect though:

$ sudo dnf reinstall c-ares
Last metadata expiration check: 2:29:24 ago on 2022-09-28T21:20:41 CEST.
Installed package c-ares-1.17.2-2.module_f36+13930+82e25793.x86_64 (from fedora-modular) not available.
Error: No packages marked for reinstall.

Thanks @computersavvy, that helped me replace libuv with a simple dnf upgrade. :blush:

I still don’t know how to replace c-ares and libnghttp2, which are still installed from the fedora-modular. I guess future upgrades will just fetch new packages from fedora repository, right? (just like libuv was upgraded once I disabled the fedora-modular repo).

Can you paste the full output of dnf --refresh info c-ares libnghttp2?
If dnf does indeed find them in a non-modular repository, try dnf distro-sync.

1 Like

That was it! :partying_face:

Thanks for your help. :blush: