<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Sep 17, 2022 at 8:35 PM Yuri Kanivetsky <<a href="mailto:yuri.kanivetsky@gmail.com">yuri.kanivetsky@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
I've noticed that an Arch Linux package (gnupg) seemingly<br>
automatically enables a socket:<br>
<br>
ln -s "../dirmngr.socket"<br>
"/usr/lib/systemd/user/sockets.target.wants/dirmngr.socket"<br>
<br>
<a href="https://github.com/archlinux/svntogit-packages/commit/e74444a6851881e2cfea37b76cfb16ba97af2fcc" rel="noreferrer" target="_blank">https://github.com/archlinux/svntogit-packages/commit/e74444a6851881e2cfea37b76cfb16ba97af2fcc</a><br>
<br>
Before the change they were symlinked to /etc/systemd/user/sockets.target.wants.<br>
<br>
Later I was told that there's such a thing as preset units (an<br>
undocumented feature?):<br>
<br>
<a href="https://bbs.archlinux.org/viewtopic.php?pid=2057758#p2057758" rel="noreferrer" target="_blank">https://bbs.archlinux.org/viewtopic.php?pid=2057758#p2057758</a><br>
<br>
The way I understood it, if I put dirmngr.socket at<br>
/usr/lib/systemd/user/sockets.target.wants, it's like adding "enable<br>
dirmngr.service" to the preset policy. In other words, it won't be<br>
enabled by default, and won't be activated on boot unless I do<br>
`systemctl --user preset dirmngr`.<br></blockquote><div><br></div><div>No, everything linked to a <span style="font-family:monospace"><unit>.wants/</span> directory immediately becomes a Wants= dep of <unit> and is therefore "enabled", it doesn't matter whether that .wants/ is in /etc or /usr/lib or /run.</div><div><br></div><div>In fact, units linked into <span style="font-family:monospace">/usr/.../*.wants/</span> are enabled <i>permanently, </i>as the sysadmin can no longer `<span style="font-family:monospace">systemctl</span>` disable them at all – they can only be masked. So the Arch change is moving into the opposite direction than what you thought.<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Can you clarify this? Are there preset units? Is my understanding of<br>
how they work correct?<br clear="all"></blockquote></div><div><br></div><div>It's not entirely correct. Systemd indeed has presets, but they work differently – there are separate config files in <span style="font-family:monospace">/usr/lib/systemd/{user,system}-preset/</span> that would be read by a `systemctl preset <unit>`. See systemd.preset(5) for details. (For example, <a href="https://aur.archlinux.org/cgit/aur.git/tree/?h=softu2f">https://aur.archlinux.org/cgit/aur.git/tree/?h=softu2f</a> uses presets to enable sockets by default.)</div><div><br></div><div>So the reason systemctl says "preset: enabled" is <b>not </b>because of any existing .wants/ symlinks (those still correspond to the main "enabled" status) – instead it's because the unit doesn't match any .preset files that would disable it (i.e. it only matches the compiled-in default "<span style="font-family:monospace">enable *</span>" preset), and therefore systemctl <i>would create </i>a .wants/ symlink from the preset.<br></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mantas Mikulėnas</div></div></div>