[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Removing sysV init files



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.  (-:


Reply to: