Jonathan de Boyne Pollard:
It didn't start because the service unit was wrong.
A quick check of the log revealed that the service was trying to
create a local-domain socket at |/run/lirc/lircd| . But there was no
|/run/lirc/| directory on my system to contain that. Your systemd
units didn't make one; and one doesn't appear by telepathy. (-:
Stefan Lippers-Hollmann's System 5 rc scripts *do* make this
directory, however. [...]
Alec Leamas:
Now, the systemd scripts are the upstream ones, and they are used in
several distributions. Hence, statements like "they are wrong" in the
sense that services doesn't start should be taken with some grain of
salt. In this case, it seems like the nosh utility doesn't use the
systemd tmfiles.d mechanisms which is the way to create temporary
files and directories in the systemd world.
I'd have used that if I'd found one. I looked, as that's the other way
of doing this instead of the |RuntimeDirectory| setting. There's *is
no* tmpfiles snippet in your source tree, that I could find. Your
|/systemd/| subdirectory (at
http://sourceforge.net/p/lirc/git/ci/master/tree/systemd/) contains only
unit files, notice; and there's nothing elsewhere that I could find.
So yes: your service unit files are wrong, or your source tree that you
give to the world is incomplete. You don't provide complete
configuration for a functional system.
Also note that Lennart Poettering would like you to use
|RuntimeDirectory| for this in preference to tmpfiles snippets, and have
your program do that in preference to either, since you are configuring
it to run as the superuser. So there's an argument, at least from the
systemd people, that /your daemon//program/ is incomplete.
http://lists.freedesktop.org/archives/systemd-devel/2013-July/012024.html
I did enjoy the Mouse Trap nature of your lircd-setup service, that I
looked at when looking for where you could be hiding your creation of
the |/run/lirc/| directory. Your lircd service unit pulls in another
oneshot service unit that in turn invokes a Python program
(http://sourceforge.net/p/lirc/git/ci/master/tree/tools/lircd-setup),
which then reads a configuration file for a string, that it in turn
passes to the POSIX-compatible shell for execution as an arbitrary shell
command (with superuser privileges, of course). There's definitely a
middle man to be cut out, there. Learn from the mistakes in the systemd
House of Horror. (-:
http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/systemd-house-of-horror/
Alec Leamas:
That said, I have sent a question to Stefan about his role here: is
the maintainer? If so, what is his plans? However, I still havn't got
any reply on this.
You can actually look the answer to the first question up for yourself:
https://packages.debian.org/source/sid/lirc
That's how I knew that xe was one of the maintainers. (-: