Bug 1530081
| Summary: | repoclosure --best broken on multilib arches | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Paul Howarth <paul> |
| Component: | dnf-plugins-core | Assignee: | Marek Blaha <mblaha> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 27 | CC: | dmach, jmracek, packaging-team-maint, rpm-software-management, vmukhame |
| Target Milestone: | --- | Keywords: | Triaged |
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2018-06-28 08:33:26 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: | |||
The issue is solved by dnf-plugins-core-3.0.1-1 that was released into rawhide. |
Description of problem: Since upgrading from Fedora 25 to Fedora 27 I have an issue running repoquery against multilib x86_64 repository sets with --best. The set of packages checked against now only includes one of the multilib arches instead of both. Version-Release number of selected component (if applicable): dnf-plugins-core-2.1.5-1.fc27.noarch How reproducible: Pretty easy. Steps to Reproduce: 1. Use a Fedora 27 x86_64 system 2. Run "dnf repoclosure --check=updates --best" Actual results: Lots of errors about missing libraries, among other things, because only one of glibc.x86_64 and glibc.i686 will be checked against. e.g.: package: 389-ds-base-1.3.7.8-1.fc27.x86_64 from updates unresolved deps: libdb-5.3.so()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.17)(64bit) libnspr4.so()(64bit) libnss3.so()(64bit) libnss3.so(NSS_3.9.2)(64bit) libns-dshttpd-1.3.7.8.so()(64bit) libssl3.so(NSS_3.14)(64bit) libssl3.so(NSS_3.2)(64bit) libssl3.so(NSS_3.7.4)(64bit) libcrypt.so.1()(64bit) libcrypt.so.1(GLIBC_2.2.5)(64bit) libdl.so.2()(64bit) libcom_err.so.2()(64bit) libldap_r-2.4.so.2()(64bit) libnss3.so(NSS_3.3)(64bit) libnss3.so(NSS_3.2)(64bit) liblber-2.4.so.2()(64bit) libldap-2.4.so.2()(64bit) libk5crypto.so.3()(64bit) libplc4.so()(64bit) libplds4.so()(64bit) libkrb5.so.3()(64bit) libssl3.so()(64bit) libpthread.so.0()(64bit) libnss3.so(NSS_3.12)(64bit) libnss3.so(NSS_3.4)(64bit) libsasl2.so.3()(64bit) Expected results: A much smaller list, consisting only of actual broken dependencies. Additional info: I believe this is due to an underlying change in the dnf query filter API, in which query.filter(latest=True) now only picks the one latest version of a package across all repos and arches (arbitrarily picking one arch when there are multiple with the same NEVR). The previous behavior can be obtained by using query.filter(latest_per_arch=True), which fixes this problem. Whilst debugging this issue I also came across another change. It appears that query.latest() now behaves the same as query.filter(latest_per_arch=True), which finds the latest package per arch across all repos, whereas it used to find the latest package per arch in each repo. The result of this is that repoclosure --newest and repoclosure --best now do the same thing.