Bug#1027166: rc.local should NOT depend on network-online or anything else

Michael Biebl biebl at debian.org
Sat Dec 31 09:49:30 GMT 2022


Control: severity -1 wishlist
Control: tags -1 + wontfix

Hello

Am 28.12.22 um 19:55 schrieb Michael Tokarev:
> Package: systemd
> Version: 252.2-2~bpo11+1
> Severity: serious
> 
> I just come across a situation where my notebook does not let me in while
> I'm in a place where network is not available. This is entirely wrong.
> After a painful debugging session, I found the debian-shipped file
> /lib/systemd/system/rc-local.service.d/debian.conf , which adds dependency
> of rc.local for network-online.
> 
> Found the commit which introduced this:
> 
> commit 4a26840495a297e50283a1f8def090540d15042d
> Author: Martin Pitt <martinpitt at gnome.org>
> Date:   Mon Jun 1 15:56:45 2015 +0200
> 
>      Make rc-local.service wait for network-online.target (if it gets started)
>      
>      Add debian/extra/units/rc-local.service.d/wait-online.conf.
>      This not specified by LSB, but has been behaving that way in Debian under SysV
>      init and upstart.
>      
>      LP: #1451797
> 
> and found the original bugreport from 2015,
> https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1451797
> (and a new one filed in 2021,
> https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1950906 ).
> 
> On all systems, rc.local is empty by default (or doesn't exist), so it does
> not depend on anything at all.  Only the user who modifies this file *locally*
> knows which dependencies are required, and this user can add their own
> /etc/systemd/system/rc-local.d/whatever.conf with the right deps, if needed.
> 
> Adding *any* dependencies by default is entirely, utterly wrong. This way,
> you force completely innocent, unsuspecting people who used to put some
> quick thing into their rc.local to suffer from being unable to login.

There are a couple of misconceptions in this bug report. I'll try to 
address them individually

- rc.local does *not* add a dependency on network-online.target (which 
would be a Wants or Requires), but merely adds an ordering (After=) 
against network-online.target.
network-online.target is an active unit, i.e. it needs to be pulled in 
explicitly. If the target was active for you, then some other unit other 
then rc-local.service requested its start

The choice of not adding a "Wants=network-online.target" to 
rc-local.service is deliberate. We do not want to pull it in by ourselves.

- "does not let me in"
I assume you mean that you are not able to log in (on the console).
This is incorrect. What network-online.target does (or to be specific 
the services that hook into network-online.target) is to delay the start 
of this target until network is available. So at most, you should 
experience a delay until you can log in. E.g. in case of 
NetworkManager-wait-online.service it is 60s.
If you have a service that hooks into network-online.target that blocks 
indefinitely, then this is a bug in this service. It should have a timeout.

- The After=network-online.target ordering in rc-local.service was done, 
as users in the past often added stuff like "mount some network 
resource) or did other stuff that required network access.
By changing the behaviour of rc-local.service we would breaks all those 
exising rc-local scripts out in the wild. So we are not going to change 
its behaviour when it has been this way for over decades.

So marking the bug as wishlist (change of behaviour) + wontfix.

If you don't like the rc.local behaviour, my recommendation would be to 
simply not use it. It's a hack anyway and it is super easy to write a 
custom service unit. Alternatively, you can disable

/etc/rc.local hasn't been installed by default for a long time and 
hasn't been made executable for even longer.

Regards,
Michael



-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20221231/ccd77bf3/attachment-0001.sig>


More information about the Pkg-systemd-maintainers mailing list