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.

  • Red Rozenglass@fedi.dreamscape.link
    link
    fedilink
    arrow-up
    2
    ·
    16 hours ago

    @that_leaflet@lemmy.world Slackware is the closest I know. It has a set of packages that it considers the official distribution, and you’re supposed to install all of them unless you know what you’re doing, and it doesn’t provide any more extra packages to choose and install; anything else you might need that’s not in the default install, you install from a ports-like community repo called SlackBuilds.org, or other providers of SlackBuild scripts or pre-built packages. To update the entire core system, you run slackpkg update && slackpkg upgrade-all. It will only upgrade Slackware’s core packages, and not your extra packages. If you’re running a stable Slackware version, then those upgrades have very little chance of breaking your dependent extra packages. If you want to upgrade your extra packages, then that’s on you, whether you’re doing it manually, or using one of the many community-made non-official package manager. This setup has been very stable in my commercial production experience which started with Slackware 15.0.