From 72ceee435d9d585115bd89f8aca4883d240cd387 Mon Sep 17 00:00:00 2001 From: Luca BRUNO Date: Mon, 19 Sep 2022 10:09:17 +0000 Subject: [PATCH] docs: add a note about selectively overriding default dependencies This documents that explicit `Before=`/`After=` dependencies can be used to selectively override implicit ordering coming from default dependencies. That allows for more granular control compared to the already documented `DefaultDependencies=no` option. The alternative approach came up in a discussion around the ordering of `boot-complete.target`, so this also adds an explicit suggestion in that direction to the "Automatic Boot Assessment" documentation. Ref: https://lists.freedesktop.org/archives/systemd-devel/2022-September/048330.html --- docs/AUTOMATIC_BOOT_ASSESSMENT.md | 8 ++++++++ man/systemd.unit.xml | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/AUTOMATIC_BOOT_ASSESSMENT.md b/docs/AUTOMATIC_BOOT_ASSESSMENT.md index c1173cf509..c2a53f48dc 100644 --- a/docs/AUTOMATIC_BOOT_ASSESSMENT.md +++ b/docs/AUTOMATIC_BOOT_ASSESSMENT.md @@ -197,6 +197,14 @@ are a couple of recommendations. wrap them in a unit and order them after `boot-complete.target`, pulling it in. + Such unit would be typically wanted (or required) by one of the + [`bootup`](https://www.freedesktop.org/software/systemd/man/bootup.html) targets, + for example `multi-user.target`. To avoid potential loops due to conflicting + [default dependencies](https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Default%20Dependencies) + ordering, it is recommended to also add an explicit dependency (e.g. + `After=multi-user.target`) to the unit. This overrides the implicit ordering + and allows `boot-complete.target` to start after the given bootup target. + ## FAQ 1. *I have a service which — when it fails — should immediately cause a diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 02d5e72aee..e29bb98540 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -331,11 +331,11 @@ For example, target units will complement all configured dependencies of type Wants= or Requires= with dependencies of type - After= unless DefaultDependencies=no is set in the - specified units. See + After=. See systemd.target5 - for details. Note that this behavior can be turned off by setting - DefaultDependencies=no. + for details. Note that this behavior can be opted out by setting + DefaultDependencies=no in the specified units, or it can be selectively + overidden via an explicit Before= dependency.