peter hessler - inactive is a user on mastodon.social. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.

having to upgrade varnish isn't helping with the anger issues.

I AM NOW FULL OF RAGE.

AM NOW DEBUGGING SYSTEMD, AND HAVING TO LEARN THE INTERNALS.

ALL OF THE RAGE

peter hessler - inactive @phessler

not kidding, we fixed it with:

EnvironmentFile=-/etc/default/varnish
ExecStart=/bin/bash -c "/bin/echo ${DAEMON_OPTS} && /usr/sbin/varnishd ${DAEMON_OPTS}"

Because otherwise systemd would randomly eat parts of ${DAEMON_OPTS}. oh yes, we *also* had to make DAEMON_OPTS a single line, because *something* didn't like '\' continuation chars.

systemd is the worst software I've ever had to use, and I've used AIX, HP-UX, Solaris, and 16-bit Windows Payroll software.

· Web · 23 · 25

systemd parses and interprets ${VARIABLE} different than shells do.

in every shell that has ever existed, ${VARIABLE} ensures that only VARIABLE is expanded, even if VAR also exists.

systemd instead passes the entirety of VARIABLE as a single argument.

so argv and argc were wrong

ARGV AND ARGC WERE FUCKING WRONG!

@phessler You should write a bug ticket. Get your name into a SystemD commit.

@phessler I can imagine the Phoronix or LWN headline now:

"OpenBSD committer bows to the SystemD overlords."

@phessler You've improved my day immensely, because I don't have to deal with this crap.

@phessler Do you mean it behaves exactly as written in the doc and illustrated by an example ?

--------------------------8<--------------------------
Example:

Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}

This will execute /bin/echo with four arguments: "one", "two", "two", and "two two".
--------------------------8<--------------------------

freedesktop.org/software/syste

@smortex yes. That is 100% broken. Should never have existed like that.

@phessler remember that there is no shell there to guess which arguments should be split at spaces and which should not (as you would do using quotes with a shell)… A syntax that allows you to split or not split during variables expansion definitively makes sense IMHO.

@smortex it already supports single and double quotes! And they work exactly the way it does in shell.

You can even embed the single quotes in the variable, as you can see just 5 lines below your example.

It's broken, it's flawed, and it is absolutely wrong.

@smortex not to mention, conflicting with extremely common syntax, is also a serious bug.

I think the thing that pisses me off the most, is I was doing the work the maintainers *should* have done in the first place.

It was normal for many releases to edit a file, and it would be pulled in. The old file is still necessary, because of the reload process. They should have ensured that method still works.

wow. I sure did trigger a lot of responses to this thread.

birdsite's systemdsucks quoted me about 4 times, so did about 8 other people. my notifications on both platforms are pretty much out of control :)

the moral of the story: use software written by people that think, instead of systemd.

@phessler I'm still at a complete loss why so many linux distributions accepted it as their default init system.

Maybe it's just us old crusty *nix types that saw it for what it was ?

Apparently phk feels good about these toots. I'm only saying them because his company fucked up.

@phessler Are you not making the incorrect assumption here that systemd operates like a shell? Given the fact that, yknow, it's *not*. It provides primitive shell-*like* substitution. #fanstheflames

@ikey shell-like substitution is pretty simple. $VARIABLE gets expanded, sure. ${VARIABLE} gets expanded.

But ${VARIABLE} is never expanded to be a single argument, in any shell-like construction I've ever heard of.

The point of the feature is to take shell env variables, and I specifically used the "pull from a file" option. *That* should have shell-like behaviour.

If they used $'VARIABLE' to quote it, fine. ${V} should be a syntax error, instead of the current behaviour.

@phessler So out of curiosity - would you put this down to poor documentation, poor implementation, or both? And I'm aware you're against the use of systemd (or I gather as much) - but it's arguably that it is having an impact on your daily life. Is this something you'd want to personally fix?

@ikey I'm a *BSD user and developer. I only use Linux under duress (aka, at work).

Besides, I've seen too many horror stories of dealing with Lennart, that I won't even bother to fix it for them. If someone else were to fix it, I wish them luck.

This is poor implementation and design. Documenting this behaviour doesn't excuse it.

@phessler if it was any other situation I'd probably argue against that - but truth be known I've encountered similar upstream situations personally and been met with the wall of nope.

FWIW, as a Linux distro developer, I've wanted to use BSD for a long time. My problem has been mostly drivers, as there is a lower barrier, higher cadence, and higher tolerance, within the Linux kernel tree, it gets the drivers first. Regardless of sacrifice..

@ikey I'm not specifically against systemd for hating-systemd's sake. I'm against it because nearly every time I look at it, it has horrible behaviours and activity.

If those behaviours are fixed, I wouldn't care.

@phessler Oh I totally get it. Nobody dislikes the water cooler, its the culture around the water cooler :)

@phessler once systemd replaces the shells themselves, we'll hardly remember this was ever a problem.

@phessler I'm not sure what you mean here. Could you give an example?

@phessler You're getting old and resistant to change. Do your best to adapt man!


🤐

@phessler "Despite all my rage I am still just a rat in a systemd cage"

@phessler it's the "16-bit Windows Payroll software" that makes this gold, really.

Thank you.

@phessler Ah, the joys of ini based unit files.

As much as Ansible can be a paid in the proverbial sometimes at least it's extended yaml stuff is powerful enough to not make you tear your hair our most of the time.

@phessler I had to take a sysadmin class to finish my degree. Despite my years of experience, it took me just as long to do the exercises and projects, because they made us use CentOS. So I knew how to do things, but had to beat my head against CentOS to figure out the dumbass way they did everything.

@kurtm @phessler I maintain a pure CentOS infrastructure at work. I hate every single moment of it.

@lattera @phessler
My sympathies.

When RIT got a RHEL site license, everyone would tell me about it all excited.

Me: "But I already have all the Red Hat I want: none."

@kurtm @lattera I don't mind having "the local way". Style is style, right.

But there are rules for how environment variables work. And how systems work.

If the maintainers actually shipped a working config, I wouldn't have had today's excitement, or cared how systemd worked.

@phessler @lattera I dunno, I suspect systemd might have found a way :)

As for rules, Poettering cares not for your "rules". If you don't do it the way he just came up with, it's clearly because *you* are an idiot.

@phessler being worse than HP-UX is a truly Herculean task: I have nightmares made of setting up HP workstations in the 1990s…

It truly sounds like systemd is not only reinventing the wheel but building a whole car in the wheel including all previous mistakes.

@cynicalsecurity @phessler We used to say (way before the systemd thing) that the SUSE people had been smoking too much HP-UX... Some of their early management tools had that vibe.

@cynicalsecurity I think part of what made it worse than HP-UX is the importance of the machines involved.

HP-UX was a build/test machine that handled one or two small customers.

The varnish+systemd machine[1] is for our CDN, which a few very important customers use.

[1] the rest of the cluster will be upgraded, but only *much* later once we get all of the bugs fixed.

@phessler I can sense the dread in your toots… systemd is bad enough as-is, if you come from a BSD and/or true Unix background it becomes unbearable.

I use Kali for work, see the errors scroll past at boot and beg that they are never fatal… I wish there was a BSD-based Kali to be honest.

@cynicalsecurity I've spent more time fighting this one systemd, than it could ever save across our entire fleet of machines.

and yea, I regret pretty much every time I have to use linux or "linux-tools". so many easy-to-fix bugs.

*weeps for the future*

@phessler the direction Linux is taking is terrifying: they are doing everything they so adamantly criticised in Windows in the 1990s while Windows desperately tries to do the opposite. I am puzzled and concerned.

@cynicalsecurity it's almost as bad as "find a historical birdsite post from 45"

@cynicalsecurity @phessler In a few years systemd will be disclosed as a microsoft op and then it will all start to make much more sense.

@alexh @phessler or Windows will move to systemd and then we shall all be oh-so-confused

@cynicalsecurity @phessler And thus, the final, complete merging of Linux and Windows will begin. To some's surprise, to some's relief and to other's expectation, it won't even need manual conflict resolution.

@alexh @cynicalsecurity my money is on a CIA pysops attack on the computing world

@cynicalsecurity @phessler Things are growing fast, we all can admit Linux made grow the industry and the industry modeled manners to use Linux to their needs.

@phessler Regarding \ continuation chars: Aren't these part of posix shell syntax? Systemd ExecStart explicitly doesn't execute a shell first but just a binary + args and therefore doesn't support all shell syntax. So you can't expect it to support these line breaks, can you?