Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] rfc: openrc service script dependency checker
Date: Thu, 04 Dec 2014 18:03:11
Message-Id: CAGfcS_kgOcH-5UWO-kZf=V2C0pQFnbkkWU+RwPty4W0WsHx5pA@mail.gmail.com
In Reply to: Re: [gentoo-dev] rfc: openrc service script dependency checker by Dmitry Yu Okunev
1 On Thu, Dec 4, 2014 at 12:14 PM, Dmitry Yu Okunev <dyokunev@××××××××.ru> wrote:
2 >
3 > I think almost everybody here agree that Detector is really required in
4 > OpenRC. It's quite definitely that sysadmin should be able to see any
5 > error situation on his/her machine.
6
7 No argument at all with this.
8
9 > I can understand that you
10 > don't care about Debian and I'm prepared to the
11 > unfortunate fact that we will have to maintain extra patch for OpenRC
12 > package in Debian.
13
14 Please understand that I have no concerns at all with changes that
15 make OpenRC and make it more useful for everybody, including
16 non-Gentoo users.
17
18 I just think we need to be careful about tolerating incorrect input,
19 simply because some users don't want to correctly provide input.
20
21 >
22 > On 12/04/2014 04:59 PM, Rich Freeman wrote:
23 >> I think that on a boot phase in case of parallel boot rc should try
24 >> to check if loop exists and it is then print a warning and switch to
25 >> a sequential boot.
26
27 Just for the record, I didn't write this. :)
28
29 >
30 >> Just fix your dependencies.
31 >
32 > There's no dependencies to fix. They are already right. But OpenRC
33 > couldn't interpret them right. And I think Debian team won't "fix" their
34 > dependencies tree through all packages with init-scripts forcing
35 > themselves into scopes of every existing init/rc. Using other words,
36 > you're suggesting impossible thing. Sorry, but it sounds just like "get
37 > out of here" without any explanation. =\
38
39 A dependency that amounts to "this needs to be last" for more than one
40 service is an error. You can make the system do something other than
41 make every one of them last, but that doesn't mean that you're
42 satisfying the dependency.
43
44 Something either needs something else or it doesn't.
45
46 Whether the Debian team is willing to fix these kinds of errors isn't
47 something I have control over. If Gentoo package maintainers were
48 doing this sort of thing I suspect that QA would be getting involved.
49
50 I can't imagine that this sort of thing won't become just as much of a
51 problem with systemd. If you have a dependency-based service manager,
52 you need to correctly specify your dependencies. Systemd does use
53 targets which do make it easier to manage dependencies, and that is
54 something that could be done in openrc just as easily using dummy
55 services (they're really just virtuals - have a service that
56 starts/stops without actually starting/stopping anything which is
57 trivial in openrc since it is all just bash and openrc doesn't care
58 about processes).
59
60 Please don't get me wrong - I think this discussion is healthy and I'm
61 not saying "over my dead body" or anything like that. I just want to
62 make sure that we're thinking about the best possible solution. If
63 the current syntax limits our ability to properly specify dependencies
64 I'm all for improving it. I just would rather see a clean and
65 deterministic solution rather than a workaround that tries to guess
66 how to handle a loop. I'm all for input as to how to make life easier
67 for other distros to use OpenRC - it was always intended to be the
68 universal service starting solution from the beginning, hence the
69 name. The fact that potential adoption within other distros is
70 exposing weaknesses in the dependency specification is a good thing -
71 we can improve it.
72
73 Honestly, I'm not convinced that any solution (openrc, systemd, etc)
74 really has a clean solution for the "this service may or may not need
75 this other service depending on how it is being used" situation. In
76 many cases we're putting a "wants" vs a "needs" specification
77 (whatever the syntax) at the distro level and relying on the user to
78 either override this or manually enable services and so on.
79
80 --
81 Rich