## TL;DR
A dnf resolution failure means the solver cannot find a consistent set of packages. Read the Problem lines literally: they name the package, the missing requirement, and often the modular stream involved. The usual fixes are enabling the right repository (CRB or PowerTools class repos), resetting or enabling the correct module stream, or excluding a single problem package so the rest of the fleet patching proceeds.

```text
dnf update failed dependency resolution error
```

## Use this when
- dnf update prints Problem 1, Problem 2 style blocks and installs nothing.
- The error mentions a module stream or a package that requires a library version not available.
- Resolution broke after enabling a third-party repo or a module.

## Not for this skill when
- dnf resolves fine and fails at the transaction test. That is conflicts or space, handled separately.
- dnf cannot download metadata at all. That is a repo reachability problem.

## Steps
1. Copy the first Problem block and identify the exact package and requirement it cannot satisfy. Verify: the missing requirement is named, not guessed
2. Check whether the providing package lives in a repo that is disabled (for RHEL-family, the CRB or extras repos are common). Verify: dnf repolist shows the needed repo, or you enable it
3. If a module is involved, inspect it with dnf module list and reset or enable the stream the application stack expects. Verify: the module state matches the intended stream
4. If one package is simply ahead of the release, exclude it for this run and note it for follow-up. Verify: the rest of the transaction resolves and applies
5. Rerun dnf update with the fix in place. Verify: resolution completes and updates install

## Variant phrasings
### dnf problem conflicting requests cannot install best candidate
The solver-output phrasing.
### dnf modularity stream dependency error fix
The module root-cause phrasing.
### enable CRB repo dnf dependency missing
The repository root-cause phrasing for RHEL clones.

Compatibility: Compatibility: dnf 4 on RHEL 8 and later, AlmaLinux, Rocky, and Fedora; module commands do not apply to Fedora 39 and later in the same way.

## Why it happens
dnf uses a SAT solver over all enabled repos and module streams. A single unsatisfiable requirement fails the whole solve, and the solver reports the conflict chain rather than the root cause, which is often mundane: a repo that ships the needed library is disabled by default, or a module stream masks the package version the update expects.

## Edge cases / pitfalls
- Adding --nobest makes dnf try older candidates and can resolve some cases, but it can also silently skip security fixes; use it as a diagnostic, not a default.
- Third-party repos built for a different RHEL point release produce resolution errors that no module change fixes; match repo to release.
- Record every excluded package in the patch report; an excluded security update that nobody revisits is worse than a failed run.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_6qxqGQskYgKz9V1FSkL67Q
