dnf5-security-updates-knowledge-patch
DNF5 security and package management changes since training cutoff — advisory command (replaces updateinfo), security upgrade flags, automatic updates, offline upgrades, versionlock TOML, config-manager subcommands, needs-restarting defaults, Ansible dnf5 module, replay command. This skill should be used when writing DNF5 commands, Ansible dnf5 playbooks, or configuring dnf5-automatic.
What this skill does
# DNF5 Knowledge Patch
Claude knows DNF4 commands and basic yum/dnf heritage. This skill covers DNF5 changes that affect command syntax, configuration files, and automation workflows.
## Index
| Topic | Reference | Key changes |
|---|---|---|
| Advisory command | [references/advisory-command.md](references/advisory-command.md) | Replaces `updateinfo`, mandatory subcommands, JSON output, `--advisory-severities` |
| Security upgrades | [references/security-upgrades.md](references/security-upgrades.md) | `--security`/`--minimal` flags, CVE targeting, automatic updates timer+config, offline upgrades |
| Configuration | [references/configuration-changes.md](references/configuration-changes.md) | Versionlock TOML format, config-manager subcommands, needs-restarting default change |
| Automation | [references/automation-and-replay.md](references/automation-and-replay.md) | Ansible `dnf5` module, `replay` command (split from `history`) |
---
## Breaking Changes
| DNF4 | DNF5 | Notes |
|---|---|---|
| `dnf updateinfo` | `dnf5 advisory <subcommand>` | Bare `advisory` fails — subcommand required |
| `--sec-severity` | `--advisory-severities=SEVERITY,...` | Accepts: critical, important, moderate, low, none |
| `--strict` | `--skip-broken` / `--skip-unavailable` | Split into two flags; `best` defaults to `true` |
| `dnf-automatic-download.timer` | `dnf5-automatic.timer` | One timer replaces three |
| `/etc/dnf/automatic.conf` (flat) | `/etc/dnf/automatic.conf` (new keys) | `reboot = when-needed` option added |
| `versionlock.list` (flat) | `/etc/dnf/versionlock.toml` | TOML with conditions |
| `config-manager --add-repo` | `config-manager addrepo` | All flags replaced by subcommands |
| `config-manager --enable` | `config-manager enable` | Original repo files never modified |
| `needs-restarting` (process scan) | `needs-restarting` (reboothint) | Process scan requires explicit `-p` |
| `history redo/undo` | `replay <dir>` | Standalone command; takes directory, not file |
---
## Quick Reference
### Advisory queries
`dnf5 advisory` subcommands: `list`, `summary`, `info`. Bare `dnf5 advisory` fails.
```bash
dnf5 advisory list --security
dnf5 advisory summary --advisory-severities=critical,important
dnf5 advisory info FEDORA-2024-abc123
dnf5 advisory list --json # basic JSON
dnf5 advisory list --json --with-cve # adds references array
```
Severity values for `--advisory-severities`: `critical`, `important`, `moderate`, `low`, `none` (comma-separated).
### Security upgrades
```bash
# Apply only security updates
dnf5 upgrade --security
# Minimal upgrade — lowest version that fixes the advisory
dnf5 upgrade --minimal --security
dnf5 upgrade --minimal --advisory-severities=critical
# Target specific CVE or advisory
dnf5 upgrade --cves=CVE-2024-1234
dnf5 upgrade --advisories=FEDORA-2024-abc123
# Check without applying
dnf5 check-upgrade --security --json
```
Exit codes: `100` = updates available, `0` = none. `--strict` is gone — use `--skip-broken` (dependency issues) and `--skip-unavailable` (missing packages). `best` defaults to `true`.
### Automatic security updates
Config defaults: `/usr/share/dnf5/dnf5-plugins/automatic.conf`. Overrides: `/etc/dnf/automatic.conf`.
One timer replaces three (`dnf-automatic-download.timer`, `dnf-automatic-install.timer`, `dnf-automatic-notifyonly.timer` are all gone).
```ini
# /etc/dnf/automatic.conf
[commands]
upgrade_type = security # "default" or "security"
apply_updates = true
reboot = when-needed # never | when-changed | when-needed (new)
reboot_command = shutdown -r +5 'Rebooting after applying package updates'
[emitters]
emit_via = stdio # stdio, email, motd, command, command_email
```
```bash
systemctl enable --now dnf5-automatic.timer
```
### Offline upgrades
Any transactional command accepts `--offline` to defer execution to a minimal boot environment:
```bash
dnf5 upgrade --security --offline
dnf5 offline status # check pending transaction
dnf5 offline reboot # reboot and apply
dnf5 offline log --number=-1 # view last offline transaction log
```
### Versionlock (TOML)
File moved from flat format to `/etc/dnf/versionlock.toml`:
```toml
version = "1.0"
[[packages]]
name = "openssl"
[[packages.conditions]]
key = "evr"
comparator = ">="
value = "0:3.1.0"
[[packages.conditions]]
key = "evr"
comparator = "<"
value = "0:3.2.0"
```
```bash
dnf5 versionlock add openssl # lock to installed version
dnf5 versionlock exclude openssl-3.1.5-1.fc41 # skip specific version
dnf5 versionlock list
```
### Config-manager
Old flags (`--add-repo`, `--save --setopt`, `--enable/--disable`) are gone. Uses subcommands. Original repo files are **never modified** — overrides go to `/etc/dnf/repos.override.d/99-config_manager.repo`.
```bash
dnf5 config-manager enable updates-testing
dnf5 config-manager disable fedora
dnf5 config-manager setopt fedora.enabled=0
dnf5 config-manager addrepo --set=baseurl=https://example.com/repo --id=myrepo
```
### Needs-restarting
Default is now **reboothint** (was process scanning in DNF4). Process scan requires explicit `-p`.
```bash
dnf5 needs-restarting # exit 1 = reboot needed (reboothint only)
dnf5 needs-restarting -s # list services needing restart
dnf5 needs-restarting -p # list processes needing restart
dnf5 needs-restarting -p -e # exclude systemd-managed processes
dnf5 needs-restarting --json # structured JSON output
```
### Ansible dnf5 module
`ansible.builtin.dnf5` (since ansible-core 2.15) requires `python3-libdnf5` on managed hosts. As of ansible-core 2.19, `auto_install_module_deps: true` (default) installs it automatically.
```yaml
- name: Apply security updates only
ansible.builtin.dnf5:
name: "*"
state: latest
security: true
- name: Apply bugfix updates only
ansible.builtin.dnf5:
name: "*"
state: latest
bugfix: true
```
### Replay
`history replay` moved to standalone `dnf5 replay`. Takes a directory (not file). Create with `--store`:
```bash
dnf5 upgrade --security --store=./my-transaction
dnf5 replay ./my-transaction --skip-unavailable
```
---
## Reference Files
| File | Contents |
|---|---|
| [advisory-command.md](references/advisory-command.md) | Full advisory subcommand reference, JSON output formats, severity filtering |
| [security-upgrades.md](references/security-upgrades.md) | All security upgrade flags, automatic.conf configuration, timer setup, offline upgrade workflow |
| [configuration-changes.md](references/configuration-changes.md) | Versionlock TOML schema, config-manager subcommands and override paths, needs-restarting behavior change |
| [automation-and-replay.md](references/automation-and-replay.md) | Ansible dnf5 module usage and dependencies, replay command syntax |
Related in Security
mac-ops
IncludedComprehensive macOS workstation operations — diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.