Insights shows upgradable packages but dnf disagrees (modules at fault?)

Latest response

Hi folks

Insights is advising me that there are packages available to upgrade on some of my systems:

list of upgradable packages shown in Insights

but:

[root@ipa5 ~]# dnf upgrade
Updating Subscription Management repositories.
Last metadata expiration check: 4:02:27 ago on Tue 12 Oct 2021 06:08:00 UTC.
Dependencies resolved.
Nothing to do.
Complete!

Here's the list of upgradable packages and their versions in insights:

list of upgradable packages in insights

But dnf can only see the installed version of the package, not the "latest version" as displayed by insights:

[root@ipa5 ~]# dnf list --showduplicates perl-HTML-Parser
Updating Subscription Management repositories.
Last metadata expiration check: 0:28:23 ago on Tue 12 Oct 2021 10:12:39 UTC.
Installed Packages
perl-HTML-Parser.x86_64                                                                         3.72-15.module+el8.3.0+6498+9eecfe51                                                                         @rhel-8-for-x86_64-appstream-rpms
Available Packages
perl-HTML-Parser.x86_64                                                                         3.72-15.module+el8.3.0+6498+9eecfe51                                                                         rhel-8-for-x86_64-appstream-rpms 

So far I've managed to figure out that this is something to do with modules. This is terribly non-discoverable (the modules that include a package are absent from the RHEA-2020:4724 advisory, and the output of 'dnf list' and 'dnf info')! But eventually I figured out that the particular perl-libwww-perl package that I have installed is part of the module 'perl-libwww-perl:6.34:8030020200428102957:b967a9a2':

[root@ipa5 ~]# dnf module info perl-libwww-perl:6.34:8030020200428102957:b967a9a2
Updating Subscription Management repositories.
Last metadata expiration check: 0:29:58 ago on Tue 12 Oct 2021 10:12:39 UTC.
Name             : perl-libwww-perl
Stream           : 6.34 [d][e][a]
Version          : 8030020200428102957
Context          : b967a9a2
Architecture     : x86_64
Profiles         : common [d]
Default profiles : common
Repo             : rhel-8-for-x86_64-appstream-rpms
Summary          : A Perl interface to the World-Wide Web
Description      : The libwww-perl collection is a set of Perl modules which provide a simple and consistent application programming interface to the World-Wide Web. The main focus of the library is to provide classes and functions that enable you to write WWW clients. The library also contains modules that are of more general use and even classes that help you implement simple HTTP servers. LWP::Protocol::https adds a support for an HTTPS protocol.
Requires         : perl-IO-Socket-SSL:[2.066]
                 : perl:[5.26]
                 : platform:[el8]
Artifacts        : perl-Data-Dump-0:1.23-7.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Data-Dump-0:1.23-7.module+el8.3.0+6498+9eecfe51.src
                 : perl-Digest-HMAC-0:1.03-17.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Digest-HMAC-0:1.03-17.module+el8.3.0+6498+9eecfe51.src
                 : perl-Encode-Locale-0:1.05-10.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Encode-Locale-0:1.05-10.module+el8.3.0+6498+9eecfe51.src
                 : perl-File-Listing-0:6.04-17.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-File-Listing-0:6.04-17.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTML-Parser-0:3.72-15.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTML-Parser-0:3.72-15.module+el8.3.0+6498+9eecfe51.x86_64
                 : perl-HTML-Parser-debuginfo-0:3.72-15.module+el8.3.0+6498+9eecfe51.x86_64
                 : perl-HTML-Parser-debugsource-0:3.72-15.module+el8.3.0+6498+9eecfe51.x86_64
                 : perl-HTML-Tagset-0:3.20-34.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-HTML-Tagset-0:3.20-34.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTTP-Cookies-0:6.04-2.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-HTTP-Cookies-0:6.04-2.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTTP-Date-0:6.02-19.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-HTTP-Date-0:6.02-19.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTTP-Message-0:6.18-1.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-HTTP-Message-0:6.18-1.module+el8.3.0+6498+9eecfe51.src
                 : perl-HTTP-Negotiate-0:6.01-19.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-HTTP-Negotiate-0:6.01-19.module+el8.3.0+6498+9eecfe51.src
                 : perl-IO-HTML-0:1.001-11.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-IO-HTML-0:1.001-11.module+el8.3.0+6498+9eecfe51.src
                 : perl-LWP-MediaTypes-0:6.02-15.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-LWP-MediaTypes-0:6.02-15.module+el8.3.0+6498+9eecfe51.src
                 : perl-LWP-Protocol-https-0:6.07-4.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-LWP-Protocol-https-0:6.07-4.module+el8.3.0+6498+9eecfe51.src
                 : perl-Mozilla-CA-0:20160104-7.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Mozilla-CA-0:20160104-7.module+el8.3.0+6498+9eecfe51.src
                 : perl-NTLM-0:1.09-17.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-NTLM-0:1.09-17.module+el8.3.0+6498+9eecfe51.src
                 : perl-Net-HTTP-0
:6.17-2.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Net-HTTP-0:6.17-2.module+el8.3.0+6498+9eecfe51.src
                 : perl-TimeDate-1:2.30-15.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-TimeDate-1:2.30-15.module+el8.3.0+6498+9eecfe51.src
                 : perl-Try-Tiny-0:0.30-7.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-Try-Tiny-0:0.30-7.module+el8.3.0+6498+9eecfe51.src
                 : perl-WWW-RobotRules-0:6.02-18.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-WWW-RobotRules-0:6.02-18.module+el8.3.0+6498+9eecfe51.src
                 : perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+9eecfe51.noarch
                 : perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+9eecfe51.src

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

But there is another module, perl-libwww-perl:6.34:8030020200428102957:7cc0a66d which contains the package that insights lists as the "latest version":

[root@ipa5 ~]# dnf module info perl-libwww-perl:6.34:8030020200428102957:7cc0a66d
Updating Subscription Management repositories.
Last metadata expiration check: 0:34:20 ago on Tue 12 Oct 2021 10:12:39 UTC.
Name             : perl-libwww-perl
Stream           : 6.34 [d][e]
Version          : 8030020200428102957
Context          : 7cc0a66d
Architecture     : x86_64
Profiles         : common [d]
Default profiles : common
Repo             : rhel-8-for-x86_64-appstream-rpms
Summary          : A Perl interface to the World-Wide Web
Description      : The libwww-perl collection is a set of Perl modules which provide a simple and consistent application programming interface to the World-Wide Web. The main focus of the library is to provide classes and functions that enable you to write WWW clients. The library also contains modules that are of more general use and even classes that help you implement simple HTTP servers. LWP::Protocol::https adds a support for an HTTPS protocol.
Requires         : perl-IO-Socket-SSL:[2.066]
                 : perl:[5.24]
                 : platform:[el8]
Artifacts        : perl-Data-Dump-0:1.23-7.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Data-Dump-0:1.23-7.module+el8.3.0+6498+31ea7642.src
                 : perl-Digest-HMAC-0:1.03-17.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Digest-HMAC-0:1.03-17.module+el8.3.0+6498+31ea7642.src
                 : perl-Encode-Locale-0:1.05-10.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Encode-Locale-0:1.05-10.module+el8.3.0+6498+31ea7642.src
                 : perl-File-Listing-0:6.04-17.module+el8.3.0+6498+31ea7642.noarch
                 : perl-File-Listing-0:6.04-17.module+el8.3.0+6498+31ea7642.src
                 : perl-HTML-Parser-0:3.72-15.module+el8.3.0+6498+31ea7642.src
                 : perl-HTML-Parser-0:3.72-15.module+el8.3.0+6498+31ea7642.x86_64
                 : perl-HTML-Parser-debuginfo-0:3.72-15.module+el8.3.0+6498+31ea7642.x86_64
                 : perl-HTML-Parser-debugsource-0:3.72-15.module+el8.3.0+6498+31ea7642.x86_64
                 : perl-HTML-Tagset-0:3.20-34.module+el8.3.0+6498+31ea7642.noarch
                 : perl-HTML-Tagset-0:3.20-34.module+el8.3.0+6498+31ea7642.src
                 : perl-HTTP-Cookies-0:6.04-2.module+el8.3.0+6498+31ea7642.noarch
                 : perl-HTTP-Cookies-0:6.04-2.module+el8.3.0+6498+31ea7642.src
                 : perl-HTTP-Date-0:6.02-19.module+el8.3.0+6498+31ea7642.noarch
                 : perl-HTTP-Date-0:6.02-19.module+el8.3.0+6498+31ea7642.src
                 : perl-HTTP-Message-0:6.18-1.module+el8.3.0+6498+31ea7642.noarch
                 : perl-HTTP-Message-0:6.18-1.module+el8.3.0+6498+31ea7642.src
                 : perl-HTTP-Negotiate-0:6.01-19.module+el8.3.0+6498+31ea7642.noarch
                 : perl-HTTP-Negotiate-0:6.01-19.module+el8.3.0+6498+31ea7642.src
                 : perl-IO-HTML-0:1.001-11.module+el8.3.0+6498+31ea7642.noarch
                 : perl-IO-HTML-0:1.001-11.module+el8.3.0+6498+31ea7642.src
                 : perl-LWP-MediaTypes-0:6.02-15.module+el8.3.0+6498+31ea7642.noarch
                 : perl-LWP-MediaTypes-0:6.02-15.module+el8.3.0+6498+31ea7642.src
                 : perl-LWP-Protocol-https-0:6.07-4.module+el8.3.0+6498+31ea7642.noarch
                 : perl-LWP-Protocol-https-0:6.07-4.module+el8.3.0+6498+31ea7642.src
                 : perl-Mozilla-CA-0:20160104-7.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Mozilla-CA-0:20160104-7.module+el8.3.0+6498+31ea7642.src
                 : perl-NTLM-0:1.09-17.module+el8.3.0+6498+31ea7642.noarch
                 : perl-NTLM-0:1.09-17.module+el8.3.0+6498+31ea7642.src
                 : perl-Net-HTTP-0:6.17-2.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Net-HTTP-0:6.17-2.module+el8.3.0+6498+31ea7642.src
                 : perl-TimeDate-1:2.30-15.module+el8.3.0+6498+31ea7642.noarch
                 : perl-TimeDate-1:2.30-15.module+el8.3.0+6498+31ea7642.src
                 : perl-Try-Tiny-0:0.30-7.module+el8.3.0+6498+31ea7642.noarch
                 : perl-Try-Tiny-0:0.30-7.module+el8.3.0+6498+31ea7642.src
                 : perl-WWW-RobotRules-0:6.02-18.module+el8.3.0+6498+31ea7642.noarch
                 : perl-WWW-RobotRules-0:6.02-18.module+el8.3.0+6498+31ea7642.src
                 : perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+31ea7642.noarch
                 : perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+31ea7642.src

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

I've tried to do a bit of reading about modules and contexts, but there isn't a lot to go on. According to https://docs.fedoraproject.org/en-US/modularity/architecture/consuming/dnf-behavior/ the context "is a unique hash value generated by the build system to distinguish binaries built for different Fedora releases as a result of stream expansion". If I'm understanding this correctly, then the version numbers from the two modules above should be considered equal, neither one is newer than the other, and the problem is that Insights doesn't understand that, and ends up displaying the wrong information to me. Is that a known issue?

What I'm still confused by is how insights determines that perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+9eecfe51.noarch is older than perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+31ea7642.noarch; a naive version would determine that perl-libwww-perl-0:6.34-1.module+el8.3.0+6498+9eecfe51.noarch is the newer version, so how does insights decide that it's the older one? I've probably just missed something...

[additional]

Turns out I would have had an easier time identifying which modules provide the package with:

[root@ipa5 ~]# dnf module provides perl-libwww-perl
Updating Subscription Management repositories.
Last metadata expiration check: 1:35:10 ago on Tue 12 Oct 2021 10:12:39 UTC.
perl-libwww-perl-6.34-1.module+el8.3.0+6498+31ea7642.noarch
Module   : perl-libwww-perl:6.34:8030020200428102957:7cc0a66d:x86_64
Profiles : common
Repo     : rhel-8-for-x86_64-appstream-rpms
Summary  : A Perl interface to the World-Wide Web

perl-libwww-perl-6.34-1.module+el8.3.0+6498+9eecfe51.noarch
Module   : perl-libwww-perl:6.34:8030020200428102957:b967a9a2:x86_64
Profiles : common
Repo     : rhel-8-for-x86_64-appstream-rpms
Summary  : A Perl interface to the World-Wide Web

perl-libwww-perl-6.34-1.module+el8.3.0+6498+fb59cb73.noarch
Module   : perl-libwww-perl:6.34:8030020200428102957:5839bc99:x86_64
Profiles : common
Repo     : rhel-8-for-x86_64-appstream-rpms
Summary  : A Perl interface to the World-Wide Web

... although this doesn't show which of the modules are currently enabled/active.

Responses