Install only newly recommended packages on upgrades with dnf/PackageKit/microdnf
We would like to change a default behavior dnf/PackageKit/microdnf to install only newly recommended packages on upgrades. Internally we will change
exclude_from_weak_autodetect configuration option to
True. exclude_from_weak_autodetect enables autodetection of unmet weak dependencies (Recommends or Supplements) of installed packages and blocks installation of packages satisfying already unmet dependencies. In other words: When you don't have the recommended package installed, it won't be automatically installed with future upgrades of the recommending package.
- Name: Jaroslav Mracek
- Email: firstname.lastname@example.org
- Targeted release: Fedora 36
- Last updated: 2021-10-12
- FESCo issue: #2667
- Tracker bug: #2013327
- Release notes tracker: #743
The feature is designed to prevent an install of removed weak dependencies from the system by users and to not install weak dependencies missing after system deployment. It will change the behavior of DNF, microdnf, and PackageKit. The feature will be backported to all Fedoras (34+), but in default, the feature (autodetection) will be off (
exclude_from_weak_autodetect=false). The request is to enable autodetection in Fedora 36+ (
Additional information: https://bugzilla.redhat.com/show_bug.cgi?id=1699672
The default value for exclude_from_weak_autodetect configuration can be overridden in
Benefit to Fedora
After the installation of a fresh system, the first upgrade will not install a lot of weak dependencies. Some of them were excluded from the kick-start installation set for good reasons (security, image size, minimal functional set, ...), but after the first update, all weak dependencies are installed, therefore some features of deployment simply disappear.
- Proposal owners:
- The feature is ready in Pull Request - https://github.com/rpm-software-management/libdnf/pull/1279
- PRs only wait for a release of libsolv
- The Feature will be enabled in upstream as default, therefore from Fedora 36, we start to release libdnf without a revert patch of default in comparison to upstream.
- Other developers:
The change requires a new release of libsolv.
- Release engineering: #10312
No coordination required.
- Policies and guidelines: A packaging guideline should be added that discourages or forbids weak dependencies on fully versioned (sub)packages (see the details).
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives:
No manual changes will be required. After the libdnf update, this feature will be on by default.
How To Test
1. Install package without satisfied weak dependencies 2. Upgrade the upgrade. With exclude_from_weak_autodetect=true, it will not install weak dependencies of already installed packages. With exclude_from_weak_autodetect=false, weak dependencies will be installed during upgrades.
The change in default will help to keep some values for particular deployments (a minimal system will be still minimal without disabling weak dependencies). Users will be able to remove particular weak dependencies and they will be not installed on the first upgrade. In case when the feature will not work according to the user expectation it can be switched off in the dnf configuration file.
There are no external dependencies, therefore we can easily postpone the feature and the change of default behavior.
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: beta freeze
- Blocks release? N/A (not a System Wide Change), Yes/No
The feature will be documented in dnf man pages.
It would be also nice from community to document the feature in https://docs.fedoraproject.org/en-US/packaging-guidelines/WeakDependencies/ .