Container Hell
by dweller - 2024-12-04
For years, software developers have toiled to overcome the hydra that is the dynamic dependencies,
aka, DLL hell. And finally it seemed that the war is coming to an end. Developers forged Containers
and used them to contain the problem. Finally, we are freed from the dictatorship of unresolved
linker symbols! Rejoice, for we have dockers, flatpaks, snaps and AppImages! Just download,
and run! Just like in the good old days.chmod +x
Alas, today I have witnessed a quintessential moment in computing:
1
2
3
4
5
6
$ ./program.AppImage
sh: ./program.AppImage cannot execute: required file not found
$ ldd program.AppImage
...
Error relocating program.AppImage: gnu_dev_makedev: symbol not found
$
The hydra has grown a new head…
(What follows will contain a lot of swearing.)
WHAT. THE. FUCK?! Are you people out of your mind? Are we back to fucking Microsoft SxS or something?! THE FUCKING APPIMAGE IS DYNAMICALLY LINKED AGAINST GLIBC?! WHAT IS EVEN THE POINT?!
deep breath
Ok. Alright. Isn’t the point of a damn AppImage is to work anywhere, so maybe, MAYBE FUC- (exhales) maybe… Your goddamn AppImage should be a static executable depending only on fucking Linux syscalls that THEN launches your Lovecraftian abomination of a program in a container that cannot be installed by normal means because the developers have no idea how computers work?!
Like I said in one of my previous posts:
I also switched to (almost) exclusively static builds, because at some point someone has to notice that building containers (especially things like AppImages, snaps and flatpacks) are just worse way to do a statically linked executable. Like I get the idea to bundle the configuration files and maybe resources. But if you claim dynamic libraries are good because you can update them, but then you version them, and then you pack them into a static container… My friend, reexamine your life choices. But this is a separate rant.
I guess this is that rant. If your solution to DLL hell is container hell that depends on DLL hell then fucking get me off of this planet ASAP! We used to make fun of Microsoft for shipping a fucking Virtual PC image to distribute a preview of Visual Studio, now everyone is doing the same fucking shit!
Every. God. Damn. Time. People peddle a “solution” to DLL/dependency hell by layering something on top of current mess you get the current mess PLUS a mess on top of it! For the love of whatever you deem holy, recognize the issue, minimize dependencies, statically build and/or include critical dependencies in your source. I don’t care that I need download a new version of your software to get a patch BECAUSE THAT’S WHAT I HAVE TO DO WITH CONTAINERS ANYWAYS!
I am sorry I lost it here, but this have been happening for like a decade+ now and it’s not funny anymore.