Skip to content

Describe all problems even when there are protected removals#1743

Merged
evan-goode merged 2 commits intorpm-software-management:dnf-4-masterfrom
evan-goode:evan-goode/protected-problems
Feb 4, 2026
Merged

Describe all problems even when there are protected removals#1743
evan-goode merged 2 commits intorpm-software-management:dnf-4-masterfrom
evan-goode:evan-goode/protected-problems

Conversation

@evan-goode
Copy link
Member

Previously, if a transaction involved removal (or dependency break) of a protected package, only the protected package problem would be described by describeProblemRules. Information about excluded or versionlocked packages would be missing.

Setup:

dnf4 downgrade -y systemd
dnf4 versionlock add systemd
dnf4 update

Current output:

Problem: The operation would result in removing the following protected packages: systemd

Output with this patch:

 Problem 1: The operation would result in broken dependencies for the following protected packages: systemd
  - package systemd-udev-258.3-2.fc43.x86_64 from updates requires systemd(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-udev-258-1.fc43.x86_64
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 2: The operation would result in broken dependencies for the following protected packages: systemd
  - package systemd-resolved-258.3-2.fc43.x86_64 from updates requires systemd(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-resolved-258-1.fc43.x86_64
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 3: The operation would result in broken dependencies for the following protected packages: systemd
  - package systemd-container-258.3-2.fc43.x86_64 from updates requires systemd(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-container-258-1.fc43.x86_64
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 4: The operation would result in broken dependencies for the following protected packages: systemd
  - package systemd-pam-258.3-2.fc43.x86_64 from updates requires systemd = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-pam-258-1.fc43.x86_64
  - package systemd-258.3-2.fc43.i686 from updates is filtered out by exclude filtering
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 5: The operation would result in broken dependencies for the following protected packages: systemd
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires systemd-shared(x86-64) = 258-1.fc43, but none of the providers can be installed
  - package systemd-libs-258.3-2.fc43.x86_64 from updates conflicts with systemd-shared < 258.3-2.fc43 provided by systemd-shared-258-1.fc43.x86_64 from @System
  - package systemd-libs-258.3-2.fc43.x86_64 from updates conflicts with systemd-shared < 258.3-2.fc43 provided by systemd-shared-258-1.fc43.x86_64 from fedora
  - cannot install the best update candidate for package systemd-libs-258-1.fc43.x86_64
  - cannot install the best update candidate for package systemd-258-1.fc43.x86_64
 Problem 6: The operation would result in broken dependencies for the following protected packages: systemd
  - package subscription-manager-1.30.5-5.fc43.x86_64 from @System requires systemd, but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires (systemd-rpm-macros = 258-1.fc43 if rpm-build), but none of the providers can be installed
  - package systemd-258-1.fc43.i686 from fedora requires (systemd-rpm-macros = 258-1.fc43 if rpm-build), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires (systemd-rpm-macros = 258-1.fc43 if rpm-build), but none of the providers can be installed
  - cannot install both systemd-rpm-macros-258.3-2.fc43.noarch from updates and systemd-rpm-macros-258-1.fc43.noarch from @System
  - cannot install both systemd-rpm-macros-258.3-2.fc43.noarch from updates and systemd-rpm-macros-258-1.fc43.noarch from fedora
  - cannot install the best update candidate for package systemd-rpm-macros-258-1.fc43.noarch
  - cannot install the best update candidate for package subscription-manager-1.30.5-5.fc43.x86_64
  - cannot install the best update candidate for package rpm-build-6.0.1-1.fc43.x86_64
  - package systemd-258.3-2.fc43.i686 from updates is filtered out by exclude filtering
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 7: The operation would result in broken dependencies for the following protected packages: systemd
  - package sssd-kcm-2.11.1-4.fc43.x86_64 from @System requires systemd, but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires systemd-shared(x86-64) = 258-1.fc43, but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires systemd-shared(x86-64) = 258-1.fc43, but none of the providers can be installed
  - package systemd-258-1.fc43.i686 from fedora requires systemd-libs(x86-32) = 258-1.fc43, but none of the providers can be installed
  - cannot install both systemd-shared-258.3-2.fc43.x86_64 from updates and systemd-shared-258-1.fc43.x86_64 from @System
  - package systemd-shared-258.3-2.fc43.x86_64 from updates conflicts with systemd-libs < 258.3-2.fc43 provided by systemd-libs-258-1.fc43.i686 from fedora
  - cannot install both systemd-shared-258.3-2.fc43.x86_64 from updates and systemd-shared-258-1.fc43.x86_64 from fedora
  - cannot install the best update candidate for package systemd-shared-258-1.fc43.x86_64
  - cannot install the best update candidate for package sssd-kcm-2.11.1-4.fc43.x86_64
  - package systemd-258.3-2.fc43.i686 from updates is filtered out by exclude filtering
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 8: The operation would result in broken dependencies for the following protected packages: systemd
  - package mock-6.6-1.fc43.noarch from @System requires systemd-container, but none of the providers can be installed
  - package systemd-container-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-container-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-container-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-container-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-container-258-1.fc43.i686 from fedora requires libsystemd-shared-258-1.fc43.so, but none of the providers can be installed
  - package systemd-container-258-1.fc43.i686 from fedora requires libsystemd-shared-258-1.fc43.so(SD_SHARED), but none of the providers can be installed
  - package systemd-libs-258.3-2.fc43.x86_64 from updates conflicts with systemd-shared < 258.3-2.fc43 provided by systemd-shared-258-1.fc43.x86_64 from @System
  - package systemd-libs-258.3-2.fc43.x86_64 from updates conflicts with systemd-shared < 258.3-2.fc43 provided by systemd-shared-258-1.fc43.i686 from fedora
  - package systemd-libs-258.3-2.fc43.x86_64 from updates conflicts with systemd-shared < 258.3-2.fc43 provided by systemd-shared-258-1.fc43.x86_64 from fedora
  - package systemd-devel-258.3-2.fc43.x86_64 from updates requires systemd-libs(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - package systemd-container-258.3-2.fc43.i686 from updates requires systemd(x86-32) = 258.3-2.fc43, but none of the providers can be installed
  - package systemd-container-258.3-2.fc43.x86_64 from updates requires systemd(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-devel-258-1.fc43.x86_64
  - cannot install the best update candidate for package mock-6.6-1.fc43.noarch
  - package systemd-258.3-2.fc43.i686 from updates is filtered out by exclude filtering
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering
 Problem 9: The operation would result in broken dependencies for the following protected packages: systemd
  - package sssd-common-2.11.1-4.fc43.x86_64 from @System requires systemd, but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from @System requires systemd-shared(x86-64) = 258-1.fc43, but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires libsystemd-shared-258-1.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-258-1.fc43.x86_64 from fedora requires systemd-shared(x86-64) = 258-1.fc43, but none of the providers can be installed
  - package systemd-258-1.fc43.i686 from fedora requires systemd-libs(x86-32) = 258-1.fc43, but none of the providers can be installed
  - cannot install both systemd-shared-258.3-2.fc43.x86_64 from updates and systemd-shared-258-1.fc43.x86_64 from @System
  - package systemd-shared-258.3-2.fc43.x86_64 from updates conflicts with systemd-libs < 258.3-2.fc43 provided by systemd-libs-258-1.fc43.i686 from fedora
  - cannot install both systemd-shared-258.3-2.fc43.x86_64 from updates and systemd-shared-258-1.fc43.x86_64 from fedora
  - package systemd-sysusers-258.3-2.fc43.x86_64 from updates requires libsystemd-shared-258.3-2.fc43.so()(64bit), but none of the providers can be installed
  - package systemd-sysusers-258.3-2.fc43.x86_64 from updates requires libsystemd-shared-258.3-2.fc43.so(SD_SHARED)(64bit), but none of the providers can be installed
  - package systemd-sysusers-258.3-2.fc43.x86_64 from updates requires systemd-shared(x86-64) = 258.3-2.fc43, but none of the providers can be installed
  - cannot install the best update candidate for package systemd-sysusers-258-1.fc43.x86_64
  - cannot install the best update candidate for package sssd-common-2.11.1-4.fc43.x86_64
  - package systemd-258.3-2.fc43.i686 from updates is filtered out by exclude filtering
  - package systemd-258.3-2.fc43.x86_64 from updates is filtered out by exclude filtering

which is perhaps too verbose and not ideal, but at least the user gets the message that the necessary package (systemd-258.3-2.fc43.x86_64) was filtered by exclude.

This PR includes commits from #1740 because the ci-dnf-stack PR will depend on rpm-software-management/ci-dnf-stack#1810.

For: RHEL-115194

Previously, if a transaction involved removal (or dependency break) of a
protected package, only the protected package problem would be described
by `describeProblemRules`. Information about excluded or versionlocked
packages would be missing.

For: RHEL-115194
The error message now distinguishes removal of a protected package from
breaking dependencies of protected packages.
@evan-goode evan-goode force-pushed the evan-goode/protected-problems branch from 3f986ec to aa32b53 Compare February 2, 2026 14:09
Copy link
Member

@m-blaha m-blaha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There definitely is space for enhancement of solver error messages. But this patch is move in right direction.

@evan-goode
Copy link
Member Author

Agreed. Packit cannot test this itself, but tests as passing locally with rpm-software-management/ci-dnf-stack#1822, merging.

@evan-goode evan-goode merged commit f701c48 into rpm-software-management:dnf-4-master Feb 4, 2026
5 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants