3 ms·
This makes me wonder if there's a Linux base system suitable for servers that embraces the newer approach. That is, a minimal base system that's built for immut
by mwcampbell 6y ago
This makes me wonder if there's a Linux base system suitable for servers that embraces the newer approach. That is, a minimal base system that's built for immutable container images, providing just what's needed to bootstrap the current generation of language-specific build and package systems. The Alpine Linux Docker images might be a good choice for now, but IIUC, Alpine Linux itself still embraces the older distro approach.
- MetaDark 6y agoMaybe the Nix package manager / NixOS is what you're looking for? I think it takes the best features from both worlds. Every package installed with Nix is isolated into content-addressable* directories, so for example, my install of Firefox is located at /nix/store/c7pmng2x05dkigpbhnjs8fdzd8kk31np-firefox-85.0.2/bin/firefox. This is pretty inconvenient to use directly, so Nix generates a profile that symlinks all your packages into one place (eg. /run/current/system/sw, ~/.nix-profile), and then environment variables like PATH can just include <PROFILE_DIR>/bin. With this approach, I can have multiple versions of the same package installed simultaneously, without them conflicting with each other. Like in a traditional distro, any dependencies that are shared between packages aren't duplicated, but if a package needs to explicitly depend on a different version, it can. Also, because Nix is designed as a functional package manager for building packages from source (even though it has a binary cache), you can trace back exactly what sources were used to build your package and its dependencies, all the way back to the bootstrap binaries used to build any self-hosting compilers (gcc, rust, openjdk, ...) * Most packages use a hash that's generated from the inputs used to build it, rather than the output that's generated.
- vnlp 6y agoSounds like another idea of djb took off (the slashpackage hierarchy).
- MetaDark 6y agoI'm not sure what the slashpackage hierarchy is, but Nix & NixOS started in 2003.
- lifthrasiir 6y agoThat's https://cr.yp.to/slashpackage.html https://cr.yp.to/slashpackage.html which is dated at least 2001. It's not quite the same to the Nix approach though, which also tracks all direct and transitive dependencies.
- mroche 6y ago> That is, a minimal base system that's built for immutable container images, providing just what's needed to bootstrap the current generation of language-specific build and package systems. At least for the first half, that sounds sort of like Fedora/Red Hat CoreOS[0], the predecessor CoreOS fork Flatcar Container Linux[1], or the Amazon distribution BottleRocket[2]. [0] https://getfedora.org/en/coreos?stream=stable https://getfedora.org/en/coreos?stream=stable [1] https://kinvolk.io/flatcar-container-linux/ https://kinvolk.io/flatcar-container-linux/ [2] https://aws.amazon.com/blogs/aws/bottlerocket-open-source-os-for-container-hosting/ https://aws.amazon.com/blogs/aws/bottlerocket-open-source-os...
- steveklabnik 6y agoFun thing about BottleRocket relevant to this thread: it uses Cargo as its build system. It's really wild and very interesting and more people should know about it, IMHO.
- mands 6y agoCheck out Fedora Silverblue for something along these lines.