How do I actually poweroff after `dnf offline-upgrade reboot`?

I tried it in a VM and had the same experience. DNF is in fact calling systemctl poweroff:

Mar 07 14:48:42 fedora python3[860]: Upgrade complete! Cleaning up and powering off...
Mar 07 14:48:42 fedora dnf-3[860]: Cleaning up downloaded data...
Mar 07 14:48:42 fedora systemd-logind[1501]: The system will power off now!
Mar 07 14:48:42 fedora systemd-logind[1501]: System is powering down.

But then later:

Mar 07 14:48:43 fedora systemd[1]: dnf-system-upgrade.service: Main process exited, code=killed, status=15/TERM
Mar 07 14:48:43 fedora systemd[1]: dnf-system-upgrade.service: Failed with result 'signal'.
Mar 07 14:48:43 fedora systemd[1]: Stopped dnf-system-upgrade.service - System Upgrade using DNF.
Mar 07 14:48:43 fedora systemd[1]: dnf-system-upgrade.service: Triggering OnFailure= dependencies.

What seems to have happened is that systemd stopped dnf-system-upgrade.service by sending SIGTERM, which is fine for normal services, but since 2016 that’s interpreted as a failure for Type=oneshot . That triggers OnFailure=dnf-system-upgrade-cleanup.service, which runs systemctl reboot.

As a oneshot service, it needs to exit before systemd terminates it, or possibly it could add SuccessExitStatus=SIGTERM as a workaround.

If you see the same log output on your system, you can open an issue if you’d like, but this is all slated for replacement with dnf5

2 Likes