It's also a solvable problem for most part. If you have a set of packages almost all the software needs, someone should probably create base image for everyone with everything pre-installed so your dockerfile starts with FROM companybaseimage:latest
It's not a solved problem because build systems keep breaking in random places.
Granted, these problems are in general easy to solve. But we're talking about death from a thousand papercuts here. In other words, boredom from a thousand compile errors.
Anyway, I wish I had a Dev Team like you have to solve these problems for me ...
Noting that I am being frank and honest here, but you don't have a dev problem here, but most likely an organization level problem.
Namespaces and interface contracts should be dramatically reducing dependency issues, not causing them to explode.
I'm no expert, but I've encountered the "stick to one process per container" rule of thumb many many times. Could you please share your perspective? Thanks in advance.
Unless your problem/complaint is deeper then that.
Bored sysadmin: All I do is install X, Y, & Z over and over again. Surely there's more to life then this.
or
Resource-minded DevOps: Hey, it seems like we install the same 4 packages on these hundreds of containers! Surely there's something we can do to optimize this!
And the number of required packages gets bigger and bigger.
But with Nix!...Now you have two problems.
The most naive thought it was good for security reasons.
It kept a lot of people busy during the ZIRP era when money was abundant or corporation were moving to the cloud.
My guess is either the industry is gonna stagnate or a new simpler solution to package and run application is gonna appear sooner or later.
My problem is that embedded systems usually have little compute power so compiling stuff for them is really tiresome (and cross-compiling is another nightmare), so I apt-get what I can and compile as little as possible.
Also, afaiu, Nix is tied to a particular version of libc which has a high probability of not working with the vendor-installed libraries on my systems.
> Also, afaiu, Nix is tied to a particular version of libc which has a high probability of not working with the vendor-installed libraries on my systems.
Nix ships a whole dependency tree with every package, down to and including a libc. If you have another libc, Nix won't care.
On the other hand, if your hardware isn't supported by the libc Nix ships, the natural path is probably to package whatever given libc in Nix and build against that. Then you are back to building from source via Nix.
Nix has pretty good support for cross-compilation, multilib, and 'remote builders', though. You can set your embedded systems up so that Nix builds happen on more powerful machines and then get copied over.
Nix evaluation itself requires a lot of RAM, though, so if you use Nix for embedded you probably still want to push packages to the weaker systems from the outside.