Coming from software development, the systemd controversy is starting to feel more familiar as I learn more of it.
It really reminds me of what happens sometimes in backend web systems development when an overly complicated framework takes over a programming language community. Getting anything done no longer becomes about using the tools to interact with HTTP, or the language runtime (if relevant), or anything else absolutely essential to the task at hand - it’s about learning the framework itself and its peculiarities, its specific abstractions and semantics wrapping real concepts.
An example is Spring Framework. One does not simply write a little bit of code to cache something in memory at the place one needs it, no! One must use a ProxyFactoryBean to apply a CachingInterceptor, in the bean configuration XML of course! (Of course being Java, you have the extra layer of indirection and fakery as the Java community is/was full of people obsessed with shoving everything possible into a design pattern for cred.)
One does not simply read a systemd log file using cat, nor filter with grep. One must use journalctl with its specific arguments to filter by specific things. Because the logs are binary or something. I feel like I’m not learning Linux/UNIX anymore, I’m learning systemd.
I do like systemd’s unit system, with its whole dependency graph for reaching certain targets, etc. However, given the nigh ubiquity of systemd, I’ve not really had much of a chance to learn any alternatives, so it seems I must simply get used to it regardless.
I still use grep with journalctl because I find their built-in filter to be poopy.
Oooooh, wait. Does Quadlet let you run containers via systemd unit files??
Quadlet is a tool for running Podman containers under systemd in an optimal way by allowing containers to run under systemd in a declarative way.
https://www.redhat.com/en/blog/quadlet-podman
That’s cool! Thanks! TIL!
It’s like
docker-compose
on steroids if you don’t use Kubenetes and want to treat your machines like pets not cattlepets not cattle
I love this one because it flirts with all the bad things of 30-year-old RFCs and forgets sheepdogs in the tight narrative handwave.
Ok I don’t know how sheepdogs fit into the analogy but IMO they are neither pets nor cattle. They are like coworkers, and if I have to risk one every now and then to keep the wolves busy, so be it. It’s a dog-eat-dog world.
Here’s a good example for Jellyfin that got me started with quadlets.
Note on the above: the linuxserver.io jellyfin image has an ffmpeg bug in it, so swap to the official docker image in the config.
I
lovehatelovehatelove systemd!It’s great sometimes but trying to deal with systemd-related objects in an OpenBMC Yocto project has been an absolute nightmare. Like many things, it’s got ups and downs.
Benno Rice gave an excellent talk on this:
But it doesn’t follow the Unix Philosophy!
Who cares? It makes my life so much easier!
REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!
When will you learn? When will you learn that your choices in process management software have consequences?
GNU is Not Unix
…“No, not like that”
Linux Is Not UniX
not everything needs to be a file.
in fact most things shouldn’t.
Pretty sure they meant the whole “do one thing, do it well, and prefer composition” part.
But I’m more interested in what parts of systemd don’t follow the file metaphor, and what things you think shouldn’t follow that metaphor? How would you interact with those things?
journalctl
. I don’t give a damn as to where the logs are, and I just have telljournalctl
to give me the logs for whatever I want.That’s all fine and good, but that’s not quite related to the “everything is a file” metaphor. The data is still stored in files and accessed using conventional io and the command itself is routinely piped to other commands.
Everything being a file is extremely pervasive in unix, and I couldn’t think of what systemd was doing that went in opposition to the metaphor.
journalctl. I don’t give a damn as to where the logs are, and I just
But for a tool that read log configs and find that out for you, you’ve let Timers into your home.
Heh? Why?
That ain’t the Unix Philosophy I was refering to.
So yeah the bird was me. But back in the day there was linux with a bunch of config files and windows with the registry.
It could be a pain to deal with config files but it was nowhere near as bad a dealing with the gigantic mess that was the windows registry. So someone trying to move linux away from one of the things that made it better then windows to a windows like system seemed like a horrible idea.
Combine that with the main systemd guy coming off as a bit of a jerk online and the resistance is understandable.
I’m still looking for a cheatsheet mapping journalctl commands to plain tail+grep on var log files…