DNF5-AUTOMATIC(8)
π DNF5-AUTOMATIC(8) β the dnf5 manual, automatic edition π
okay bestie, so the header says DNF5-AUTOMATIC(8) and it lives in the dnf5 manual, and literally the whole vibe of this page is "let the computer handle its own upgrades while you go touch grass." let's get into it β¨
πΈ NAME πΈ
dnf5-automatic β the Automatic Command. that's it, that's the name π
π¦ SYNOPSIS π¦
dnf5 automatic [options]
β¨ DESCRIPTION β¨
so this is basically an alternative CLI to dnf upgrade, except it's built with special facilities to make it suitable to be run automatically and regularly from systemd timers, cron jobs and similar. main character energy for a package manager ngl π
The operation of the tool is controlled by configuration files. Default values are set from the /usr/share/dnf5/dnf5-plugins/automatic.conf config file, and then host-specific overrides from /etc/dnf/automatic.conf are applied on top. so like, defaults first, your spicy takes second π«Ά
The tool synchronizes package metadata as needed, then checks for updates available for the given system, and then either exits, downloads the packages, or downloads and applies the updates. The outcome of the operation is then reported by a selected mechanism β for instance via the standard output, email, or MOTD messages π¬
The systemd timer unit dnf5-automatic.timer will behave as the configuration file specifies (see below) with regard to whether to download and apply updates. iykyk π
π OPTIONS π
--timerβ apply a random delay before execution. lil bit of chaos, lil bit of jitter β°
The following options can be used to override values from the configuration file (yes, you can boss it around):
--downloadupdatesβ automatically download updated packages.--no-downloadupdatesβ do not automatically download updated packages.--installupdatesβ automatically install downloaded updates. heads up: this implies--downloadupdatesπ--no-installupdatesβ do not automatically install downloaded updates.
π₯ RUN DNF5 AUTOMATIC SERVICE π₯
The service is typically executed using the systemd timer dnf5-automatic.timer. To configure the service, customize the /etc/dnf/automatic.conf file. You can either copy the distribution config file from /usr/share/dnf5/dnf5-plugins/automatic.conf and use it as a baseline, or create your own configuration file from scratch with only the required overrides. both are valid, do whatever slays π
Then enable the timer unit:
systemctl enable --now dnf5-automatic.timer
and that's it, she's on a schedule now π
π§ CONFIGURATION FILE FORMAT π§
The configuration file is separated into topical sections. very organized, very demure β¨
πΈ [commands] section πΈ
Setting the mode of operation of the program. the control room, basically ποΈ
apply_updatesβ boolean, default:FalseWhether packages comprising the available updates should be applied bydnf5-automatic.timer, i.e. installed via RPM. Impliesdownload_updates. Note that if this is set toFalse, downloaded packages will be left in the cache till the next successful DNF transaction. (yes, they just vibe in the cache π« )download_updatesβ boolean, default:TrueWhether packages comprising the available updates should be downloaded bydnf5-automatic.timer.network_online_timeoutβ time in seconds, default:60Maximal timednf5 automaticwill wait until the system is online.0means that network availability detection will be skipped. zero = no waiting, we go π¨random_sleepβ time in seconds, default:0Maximal random delay before downloading (only applied if--timeroption was used). Note that, by default, the systemd timers also apply a random delay of up to 1 hour. so yeah, double delay potential, iconic β³upgrade_typeβ either one ofdefault,security,distro-sync, default:defaultWhat kind of upgrades to look at.defaultsignals looking for all available updates,securityonly those with an issued security advisory,distro-syncsynchronizes packages to the latest available versions in the enabled repositories (similar todnf5 distro-sync).rebootβ either one ofnever,when-changed,when-needed, default:neverWhen the system should reboot following upgrades.neverdoes not reboot the system.when-changedtriggers a reboot after any upgrade.when-neededtriggers a reboot only when rebooting is necessary to apply changes, such as when systemd or the kernel is upgraded. choose your fighter π₯reboot_commandβ string, default:shutdown -r +5 'Rebooting after applying package updates'Specify the command to run to trigger a reboot of the system. For example, to skip the 5-minute delay and wall message, useshutdown -r. (rude but efficient lmao)
π [emitters] section π
Choosing how the results should be reported. how do we spill the tea, basically β
emit_viaβ list, default:stdioList of emitters to report the results through. Available emitters arestdioto print the result to standard output,commandto send the result to a custom command,command_emailto send an email using a command,emailto send the report via email using SMTP server (see[email]section for requirements), andmotdsends the result to/etc/motd.d/dnf5-automaticfile. pick your fave, or several πsystem_nameβ string, default: hostname of the given system How the system is called in the reports. her government name πͺͺemit_no_updatesβ boolean, default:FalseWhether to emit a message when nothing interesting happened β the operation succeeded and no packages were available/installed. honestly sometimes silence is the moment π€«
π [command] section π
The command emitter configuration. Variables usable in format string arguments are body with the message body.
command_formatβ format string, default:catThe shell command to execute.stdin_formatβ format string, default:{body}The data to pass to the command on stdin.
π§ [command_email] section π§
The command email emitter configuration. Variables usable in format string arguments are body with message body, subject with email subject, email_from with the "From:" address and email_to with a space-separated list of recipients.
command_formatβ format string, default:mail -Ssendwait -s {subject} -r {email_from} {email_to}The shell command to execute.email_fromβ string, default:rootMessage's"From:"address.email_toβ list, default:rootList of recipients of the message.stdin_formatβ format string, default:{body}The data to pass to the command on stdin.
π [email] section π
The email emitter configuration. This emitter sends messages directly via an SMTP server using libcurl. It requires libcurl with SMTP protocol support. Some distributions ship a minimal variant of libcurl without SMTP support. On Fedora, this can be resolved by running dnf5 swap libcurl-minimal libcurl. Alternatively, use the command_email emitter which does not require SMTP support in libcurl. Credentials for the SMTP server are read from the ~/.netrc file. π
ngl the "minimal libcurl has no SMTP" thing is a real gotcha, so like, check before you flame the config π₯
email_fromβ string, default:rootMessage's"From:"address.email_toβ list, default:rootList of recipients of the message.email_hostβ string, default:localhostHostname of the SMTP server used to send the message.email_portβ integer, default:25Port number to connect to at the SMTP server.email_tlsβ either one ofno,yes,starttls, default:noWhether to use TLS, STARTTLS or no encryption to connect to the SMTP server.
π [base] section π
Can be used to override settings from DNF's main configuration file. See dnf5.conf(5). yes bestie, that's a SEE ALSO, go read it π
π Author π
See AUTHORS.md in dnf5 source distribution. (the whole squad π«Ά)
β Copyright β
Contributors to the dnf5 project.
alright that's the whole page, no cap π β this is dnf5-automatic(8) from the dnf5 manual, dated Oct 17, 2026, and that's the tea bestie, go let your timers do their thing πππ¦β¨
π¦ where this page comes from
- arch rolling: dnf5 5.4.6.0-2 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms