Dnf module deprecated

hello all -

on RL-10, i am getting warning messages about use of ‘module’ is deprecated:

WARNING: modularity is deprecated

is there an equivalent?

currently the following two commands continue to work:

dnf module reset php;
dnf module enable php:remi-8.5;

is there a replacement i should start using?

thank you.

For now it’s working, but most likely in a new release, as per the message, modules will be deprecated. Currently there isn’t an equivalent, at least unless Red Hat decide to replace it with something else. But it could well be that they decided, that they will phase out modules and they will no longer be an option in the future.

I don’t expect they will change the version of dnf during the EL10 release, but expect when RHEL11 is released with a newer version of dnf that the modules would disappear at that point.

1 Like

It was just dropped in Fedora 43, so it will be gone in EL11 :+1:

2 Likes

Yep, I was searching a bit today as well, and they’ve been deprecating it in Fedora since F39 :slight_smile:

1 Like

i should think the replacement CLI syntax would be well known by now.

The replacement will most likely be mutliple, but versioned packages, so the dnf module enable command goes away and you will type something like dnf install php85,
but as said for Enterprise Linux this is a more far future thing, this won’t affect 8/9/10, most likely never, 11 won’t have the abililty anymore so starting with this one it’s the different way “again”.

:grinning_face: i take it you dont expect this to be any sort of improvement??? (sorry could not resist..!)

Sorry about that, it’s my own opinion, the whole Fedora project decided the Modularity stuff was more harm than a benefit ^^ (especially the building side was so much more work)
I really liked it because it made version upgrades really easy, but overall it should just be a change in behavior nothing more, can be seen neutral or as improvement :slightly_smiling_face:

2 Likes

hey, NO NEED for apologies! we can learn a LOT from the opinions of those who are much more knowledgeable in any subject than i ever hope to be.

my knowledge barely grew beyond my “Rocky Linux Early Adopter” tee-shirt that i proudly wear.

I fully agree.

BTW, MBS (Module Build System) is not mandatory to build modules :wink:

1 Like

Yes, RH chose to stop providing modules

I have written about this in: DNF 5 and Modularity

EL-10 still uses dnf 4, so modularity is fully supported

Fedora uses dnf 5, modularity is partially supported, but it works.

Yes, EL-10 will provide additional versions using namespaced packages (switching back to EL-5 time with php / php53)

For those curious about this, for PHP 8.4 a PoC repo is available in php8.4 and should be soon in CentOS Stream (so probably in 10.2)

3 Likes

To be fair, some applications have had that all along. E.g. python3, python3.11, python3.12, …

The modularity tried to implement there can be only one with many to choose from. That is, that admin can choose version of PHP for the system and then user can use (only that version) with command php. No need for user to know about version (in pathnames).

As pointed out, separate repo for each version does also provide the “can install only one, with unversioned commands”.

There are also the alternatives and Software Collections / environment modules to provide “unversioned” command for user, although they allow simultaneous installs (of namespaced packages).

Someone somewhere has to make some decisions:

  • Maintainer: what repos to create / how to build / what to put in them / how to name them
  • Admin: which repos to use / which module or package to use / select alternative
  • User: which command to use

EL 10 has .NET 8 and .NET 9 as Application Streams. They can be installed simultaneously, because there is no module metadata to hide them in the repo and because they are namespaced.

Choosing dnf install dotnet-sdk-8.0 and/or dnf install dotnet-sdk-9.0 is kind of known (for more than a decade).

Unfortunate, the amount of time and energy that gone into scl, modules, namespaces, and right now, still no one is happy.