Bug 1791843

Summary: "yum updateinfo" should apply a modular filter to the package listing
Product: Red Hat Enterprise Linux 8 Reporter: jcastran
Component: dnfAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED DUPLICATE QA Contact: swm-qe
Severity: high Docs Contact:
Priority: medium    
Version: 8.1CC: fblinuxos, james.antill, jjansky, jplesnik, kwalker, mdomonko, ppisar, sujagtap, tcallawa
Target Milestone: rcKeywords: FutureFeature, Triaged
Target Release: 8.0   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-04-29 07:30:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1654708, 1825061    

Description jcastran 2020-01-16 15:27:59 UTC
Description of problem:
The packages from https://access.redhat.com/errata/RHBA-2019:3337 are not accessible to any system without disabling module filtering.

Version-Release number of selected component (if applicable):
dnf-4.2.7-7.el8_1.noarch
libdnf-0.35.1-9.el8_1.x86_64
perl-DBD-SQLite-1.58-2.module+el8.1.0+2940+55ca6856

How reproducible:
Everytime

Steps to Reproduce:
1. yum list perl-DBD-SQLite

Actual results:
Latest shows as 
perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee   rhel-8-for-x86_64-appstream-rpms


Expected results:
Latest shows as
perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+55ca6856   rhel-8-for-x86_64-appstream-rpms


Additional info:
# yum module list perl-DBD-SQLite
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
Name                      Stream                Profiles             Summary                    
perl-DBD-SQLite           1.58 [d][e]           common [d]           SQLite DBI driver          
 
# yum list perl-DBD-SQlite --showduplicates
Installed Packages
 perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee   @rhel-8-for-x86_64-appstream-rpms
Available Packages
 perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+ab644fb0       rhel-8-for-x86_64-appstream-rpms
 perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee   rhel-8-for-x86_64-appstream-rpms
 

Here we see that by using module_hotfixes we can see the package.
 
# yum list perl-DBD-SQlite --showduplicates --setopt=rhel-8-for-x86_64-appstream-rpms.module_hotfixes=1
Installed Packages
 perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee   @rhel-8-for-x86_64-appstream-rpms
Available Packages
 perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+ab644fb0       rhel-8-for-x86_64-appstream-rpms
 perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+e351b2a7       rhel-8-for-x86_64-appstream-rpms
 perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee   rhel-8-for-x86_64-appstream-rpms
 perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+55ca6856   rhel-8-for-x86_64-appstream-rpms

Comment 1 Petr Pisar 2020-01-16 15:45:18 UTC
I believe you use RHEL 8.1. Not 8.2. The mentioned erratum is for RHEL-8.1.

Comment 2 Petr Pisar 2020-01-16 16:48:57 UTC
(In reply to jcastran from comment #0)
> Description of problem:
> The packages from https://access.redhat.com/errata/RHBA-2019:3337 are not
> accessible to any system without disabling module filtering.
> 
They are accessible. But not all of them at the same time. That's on purpose. Please continue reading.

> Steps to Reproduce:
> 1. yum list perl-DBD-SQLite
> 
> Actual results:
> Latest shows as 
> perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee  
> rhel-8-for-x86_64-appstream-rpms
> 
This the latest package built for Perl 5.26.

> Expected results:
> Latest shows as
> perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+55ca6856  
> rhel-8-for-x86_64-appstream-rpms
> 
This is the latest package built for Perl 5.24.

> Additional info:
> # yum module list perl-DBD-SQLite
> Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
> Name                      Stream                Profiles             Summary
> 
> perl-DBD-SQLite           1.58 [d][e]           common [d]           SQLite
> DBI driver          
> 
That's good. But important information in this case is what perl stream you have active. What does display the following command?

# yum module list perl

I believe it will report perl:5.26 as the active one in contrast to perl:5.24. E.g. like this:

Name     Stream       Profiles                Summary                                     
perl     5.24         common [d], minimal     Practical Extraction and Report Language    
perl     5.26 [d]     common [d], minimal     Practical Extraction and Report Language    

And that means that modular packages built for Perls other than 5.26 will be hidden. If you enabled perl:5.24, yum list would show the other perl-DBD-SQLite package.

What you experience here is a modular filtering based on the modular dependencies. There are two Perl streams perl:5.24 and perl:5.26.
There is one perl-DBD-SQLite stream perl-DBD-SQLite:1.58. The stream is built twice. Each time for a Perl. Each of them is compatible only to the one Perl, but incompatible to the other Perl. In order not to mix the packages, they are split into two sets called contexts.

You can see all the contexts (and all module versions) with "yum module info perl-DBD-SQLite:1.58" command. You will see modules with the same name, stream, and version, but diffing in context there. You will also see the packages there. What you want's see there is the modular dependency on particular perl. This is deficiency in YUM that will be corrected in the future. But you can add "-v" option to see a debugging output where the perl dependency is listed.

> # yum list perl-DBD-SQlite --showduplicates
> Installed Packages
>  perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee  
> @rhel-8-for-x86_64-appstream-rpms
> Available Packages
>  perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+ab644fb0      
> rhel-8-for-x86_64-appstream-rpms
>  perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee  
> rhel-8-for-x86_64-appstream-rpms
>
This also hides the incompatible packages as designed. And it also confirms that you have the latest perl-DBD-SQlite package already on you system and that the erratum was successfully installed.
  
> Here we see that by using module_hotfixes we can see the package.
>  
> # yum list perl-DBD-SQlite --showduplicates
> --setopt=rhel-8-for-x86_64-appstream-rpms.module_hotfixes=1
> Installed Packages
>  perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee  
> @rhel-8-for-x86_64-appstream-rpms
> Available Packages
>  perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+ab644fb0      
> rhel-8-for-x86_64-appstream-rpms
>  perl-DBD-SQLite.x86_64   1.58-1.module+el8+2519+e351b2a7      
> rhel-8-for-x86_64-appstream-rpms
>  perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+f62455ee  
> rhel-8-for-x86_64-appstream-rpms
>  perl-DBD-SQLite.x86_64   1.58-2.module+el8.1.0+2940+55ca6856  
> rhel-8-for-x86_64-appstream-rpms

Enabling module_hotfixes on a repository makes the repository to be exempted from modular filtering. That's handy for installing a hotfixes for modules and for searching among all packages regardless status of a modular stream and compatibility of a context to whom they belong to. But I discourage you from using for other purposes.

If I summarize this issue, everything works as designed. If it does not match your expectation, could you please describe your use case? I.e. What are you trying to achieve?

By the way you should get the same experience (yum list) with RHEL 8.0. There are also two contexts of perl-DBD-SQLite for two Perls. In other words it's not specific to perl-DBD-SQLite update in RHEL 8.1.

Comment 3 Petr Pisar 2020-01-17 10:12:27 UTC
I will move this report to "dnf" component because it's DNF (via yum command) that implements the modular filtering.
I believe dnf maintainers will reject this report because it works as designed.
If you need e.g. a more user-friendly way of listing all existing packages in a repository instead of setting module_hotfixes option, please tell us here.

Comment 12 Jaroslav Mracek 2020-04-29 07:30:39 UTC
I see the bug as a duplicate of 1804234.

*** This bug has been marked as a duplicate of bug 1804234 ***