Bug #826214: Bug #826215: init-d-script and systemd: solution
Christian Seiler
christian at iwakd.de
Thu Dec 29 16:35:08 GMT 2016
On 12/29/2016 01:59 PM, Petter Reinholdtsen wrote:
> [Martin Pitt]
>> "service", not invoke-rc.d, but I do agree that it would be better to
>> completely drop that magic. This would be a nice way to gradually teach people
>> about the init system neutral APIs, and also find/fix places which hardcode
>> calling /etc/init.d/.
>
> Will service respect policy-rc.d?
No, by definition it won't (neither on sysvinit nor on systemd) - just like
/etc/init.d/foo start also does not respect policy-rc.d.
service is a tool for admins, and as such shouldn't be governed by
policy-rc.d. invoke-rc.d is a tool for maintainer scripts and as such
will be governed by policy-rc.d.
invoke-rc.d is basically the following logic (pseudo-shell):
if action is allowed for script by policy-rc.d ; then
if [ -d /run/systemd/system ] ; then
systemctl action scriptname.service
elif ... upstart ... ; then
...
else
/etc/init.d/scriptname action
fi
fi
service is basically the following logic (pseudo-shell):
if [ -d /run/systemd/system ] ; then
systemctl action scriptname.service
elif ... upstart ...
...
else
in_relatively_clean_context /etc/init.d/scriptname action
fi
> I believe I saw some systemd service
> failing to respect policy-rc.d in one of my chroots, and wonder if it
> was a bug in some package or not
In that case it's very likely a bug in the package's maintainer
script.
> For the record, I believe the /etc/init.d/ scripts should keep working
> also in the future, because I believe most of the around 1000 packages
> with init.d scripts in Debian do not need to have their scripts replaced
> and it is an advantage to have one common script across all the kernels
> Debian supports.
I don't think this is in question for now - but there are multiple layers
here:
- what to do when only an init script is available and the service is
to be started (e.g. at boot)
=> systemd will call the init script (and that will stay for a
long time, even systemd upstream is not going to remove
support for this anytime soon)
- what to do when /etc/init.d/script action is called on the command
line (instead of service script action or invoke-rc.d script action)
=> at the moment systemd installs some glue code to redirect this
to systemctl, but that fails at the moment for init-d-script
(this is #826214)
> It thus make me happy to see someone have time to work on improving the
> init-d-script approach. :
Pure egoism ;-) I really don't want to maintain boilerplate code in
my packages, so I like the idea behind init-d-script a lot, because it
makes it very easy for me to provide init scripts in additino to
systemd services (that nowadays are often provided by upstream).
Anyway, patches for #826214 and other issues will soon follow.
Regards,
Christian
More information about the Pkg-systemd-maintainers
mailing list