Hello, On 12/10/2014 07:23 AM, Ivan Shapovalov wrote: > On Tuesday 09 December 2014 at 17:25:48, Francis Moreau wrote: >> Hello Lennart, >> >> Thanks for answering ! >> >> On 12/09/2014 02:10 PM, Lennart Poettering wrote: >>> On Tue, 09.12.14 11:19, Francis Moreau (francis.m...@gmail.com) wrote: >>> >>>> Hello, >>>> >>>> I've a very weird behaviour with systemd 217: >>>> >>>> # systemctl show -p Wants multi-user.target | grep network.service >>>> # systemctl show -p Wants runlevel3.target | grep network.service >>>> Wants= ... network.service ... >>>> # systemctl show -p Wants multi-user.target | grep network.service >>>> Wants=... network.service ... >>>> >>>> So basically the network.service is not part of the multi-user target >>>> dependencies. But if I'm showing the state of the runlevel3 target, the >>>> network service magically becomes a dep of multi-user.target. >>>> >>>> The network.service is an sysv service which is started by rc[345].d and >>>> has in its LSB: >>>> >>>> Provide: $network >>>> >>>> Could anybody clarify what I'm facing ? >>> >>> systemd lazy loads services from the file system as they are >>> referenced. This includes symlinked aliases, which are only loaded when >>> a unit is referenced by that specific name. >>> >> >> Sorry but I don't really understand. >> >> Do you mean that the network.service wasn't loaded although the >> runlevel3.target, which is an alias for multi-user target (default >> target) wants it ? >> >> I would be glad if you could enlight me because I'm confused. > > Apparently, network.service gets pulled in only via runlevel3.target, i. e. > there is a symlink of kind > > /{etc,usr/lib,run}/systemd/system/runlevel3.target.wants/network.service -> > network.service > > That is, the Wants= dependency is generated for runlevel3.target only, not for > multi-user.target. > > And, because systemd loads units lazily, systemd does not know about > runlevel3.target > (and its dependencies) before anything forces systemd to load that unit. > > After you issue `systemctl show runlevel3.target`, systemd loads that unit, > loads its dependencies and merges them to multi-user.target (because > runlevel3.target > is an alias for multi-user.target).
That helps, thanks ! However that seems a bit weird to have a target with 'hidden' dependencies that can appears magically when poking another one, at least from my point of (user) view. Was the lazy load mechanism integrated recently ? I'm asking because systemd 208 doesn't show the same behaviour. What's the recommanded way to make sure that the Wants= dependencies generated for runlevel3 target get pplied as soon as possible to its alias target 'multi-user' ? Thanks for your help. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel