Lately I’ve been exploring FreeBSD and OpenBSD. One of the more interesting things about them is how they handle OS and package upgrades.
On FreeBSD, the freebsd-update
command is used for upgrading the OS and the pkg
command is used for managing user packages. On OpenBSD, the syspatch
command is used for upgrading the OS and the pkg_*
commands are used for managing user packages.
Unlike Linux, these BSDs have a clear separation of OS from these packages. OS files and data are stored in places like /bin and /etc, while user installed packages get installed to /usr/local/bin and /usr/local/etc.
On the Linux side, the closest thing I can think of is using an atomic distro and flatpak, homebrew, containers, and/or snap for user package management. However, it’s not always viable to use these formats. Flatpak, snap, and containers have sandbox issues that prevent certain functionality; homebrew is not sandboxed but on Linux its limited to CLI programs.
There’s work being done to work around such issues, such as systemd sysext. But I’m starting to feel that this is just increasing complexity rather than addressing root problems. I feel like taking inspiration from the BSDs could be beneficial.
You could use something like homebrew for your packages while keeping just system packages to the default package manager. It has the upside of being separated and more recent, but it can mean duplicate packages are on the system.
deleted by creator
You are fundamentally misunderstanding how these work though. “Sandbox” is good when any userspace executed binary may comprise a system. How does that refer to a GUi, as you are using it? The actual executable code has nothing to do with it having a graphical interface.
deleted by creator
Again, no. There are a myriad of ways to do this if you just want a plainly, locally installed and running program:
You’re just adding arguments on arguments that aren’t making any sense now. You’re original comment and understanding has been addressed.
deleted by creator