Bug 1996681
Summary: | yum tries to install packages with incompatible architecture when multilib_policy=all | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 9 | Reporter: | Jan Stodola <jstodola> |
Component: | yum | Assignee: | Jaroslav Mracek <jmracek> |
Status: | CLOSED ERRATA | QA Contact: | Eva Mrakova <emrakova> |
Severity: | unspecified | Docs Contact: | |
Priority: | low | ||
Version: | 9.0 | CC: | james.antill, jikortus, packaging-team-maint, pkratoch, swm-qe |
Target Milestone: | rc | Keywords: | Triaged |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | dnf-4.10.0-2.el9 | Doc Type: | No Doc Update |
Doc Text: | Story Points: | --- | |
Clone Of: | 1995630 | Environment: | |
Last Closed: | 2022-05-17 15:55:05 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: |
Description
Jan Stodola
2021-08-23 13:11:04 UTC
Thank you very much for the report. There is not much what we can do. It is only possible to enhance documentation and remove `compatible architecture` from there. It will be may be surprising, but the issue was resolved by distribution. Distributions split content according to base arch and compatibility (X86_64 can be together with i686) nad in the path to repository they uses BASEARCH variable. I created PR that improves documentation https://github.com/rpm-software-management/dnf/pull/1789. AC: It is only the man page change therefore no tests are required. I wonder if there really isn't any solution to that problem? I hit the same issue when debugging why one of our tests (with inst.multilib) failed and found out that it happened because restraint-rhts package (available for all RHEL-9-supported architectures from internal beaker harness repo) hadn't been installed. The test actually uses our tool for automated testing of GUI installations (anabot), which performs the installation and when it's finished, it installs the restraint-rhts package and does all necessary setup steps for other beaker tasks to continue after reboot. The issue is that the package from the aforementioned repo containing packages for all architectures can't be installed as yum just ignores it (error message from an x86_64 machine): Error: Problem 1: cannot install the best candidate for the job - package restraint-rhts-0.4.0-1.el9.aarch64 does not have a compatible architecture - nothing provides restraint(aarch-64) = 0.4.0-1.el9 needed by restraint-rhts-0.4.0-1.el9.aarch64 Problem 2: cannot install the best candidate for the job - package restraint-rhts-0.4.0-1.el9.ppc64le does not have a compatible architecture - nothing provides restraint(ppc-64) = 0.4.0-1.el9 needed by restraint-rhts-0.4.0-1.el9.ppc64le Problem 3: cannot install the best candidate for the job - package restraint-rhts-0.4.0-1.el9.s390x does not have a compatible architecture - nothing provides restraint(s390-64) = 0.4.0-1.el9 needed by restraint-rhts-0.4.0-1.el9.s390x When the architecture is specified, it works as expected though: [root@localhost ~]# yum install restraint-rhts-0.4.0-1.el9.x86_64 Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. Last metadata expiration check: 0:01:47 ago on Fri 15 Oct 2021 04:11:33 PM CEST. Dependencies resolved. ====================================================================================================================== Package Architecture Version Repository Size ====================================================================================================================== Installing: restraint-rhts ... I still feel like this isn't a desired behaviour, despite the fact that the architectures for repositories are separated under normal circumstances. At least (as I'm not familiar with the yum/dnf internals) I don't understand why yum takes into account all of the other architectures first, but not the appropriate one. Jardo, could you please shed some more light on it? Thank you! Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (new packages: dnf), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2022:3957 (In reply to Jiri Kortus from comment #5) > I wonder if there really isn't any solution to that problem? I hit the same > issue when debugging why one of our tests (with inst.multilib) failed and > found out that it happened because restraint-rhts package (available for all > RHEL-9-supported architectures from internal beaker harness repo) hadn't > been installed. The test actually uses our tool for automated testing of GUI > installations (anabot), which performs the installation and when it's > finished, it installs the restraint-rhts package and does all necessary > setup steps for other beaker tasks to continue after reboot. > > The issue is that the package from the aforementioned repo containing > packages for all architectures can't be installed as yum just ignores it > (error message from an x86_64 machine): > Error: > Problem 1: cannot install the best candidate for the job > - package restraint-rhts-0.4.0-1.el9.aarch64 does not have a compatible > architecture > - nothing provides restraint(aarch-64) = 0.4.0-1.el9 needed by > restraint-rhts-0.4.0-1.el9.aarch64 > Problem 2: cannot install the best candidate for the job > - package restraint-rhts-0.4.0-1.el9.ppc64le does not have a compatible > architecture > - nothing provides restraint(ppc-64) = 0.4.0-1.el9 needed by > restraint-rhts-0.4.0-1.el9.ppc64le > Problem 3: cannot install the best candidate for the job > - package restraint-rhts-0.4.0-1.el9.s390x does not have a compatible > architecture > - nothing provides restraint(s390-64) = 0.4.0-1.el9 needed by > restraint-rhts-0.4.0-1.el9.s390x > > When the architecture is specified, it works as expected though: > [root@localhost ~]# yum install restraint-rhts-0.4.0-1.el9.x86_64 > Updating Subscription Management repositories. > Unable to read consumer identity > > This system is not registered with an entitlement server. You can use > subscription-manager to register. > > Last metadata expiration check: 0:01:47 ago on Fri 15 Oct 2021 04:11:33 PM > CEST. > Dependencies resolved. > ============================================================================= > ========================================= > Package Architecture Version > Repository Size > ============================================================================= > ========================================= > Installing: > restraint-rhts > ... > > I still feel like this isn't a desired behaviour, despite the fact that the > architectures for repositories are separated under normal circumstances. At > least (as I'm not familiar with the yum/dnf internals) I don't understand > why yum takes into account all of the other architectures first, but not the > appropriate one. Jardo, could you please shed some more light on it? Thank > you! I think that the issue is partially created by repository that is usually not in standard distribution. Normal distribution does not contain incompatible architecture together. Then such a request is difficult to resolve correctly for DNF because we do not know what was intended behavior for the particular request. Please fix your repositories to prevent such an issue or use multilib_policy=best - then DNF will pick the best architecture for you automatically. |