2 ms·
It's to create a stable target for the OS. You can target "Debian [version]" and know there's some stability & consistency to the versions of various packages.
by yamtaddle 3y ago
It's to create a stable target for the OS. You can target "Debian [version]" and know there's some stability & consistency to the versions of various packages.
There's:
1) System packages. Any OS with discrete releases should aim for stability, here, to create a useful deployment/support target.
2) User packages that the user plans to use directly. Your web browser, a spreadsheet program, maybe something like ripgrep. You don't need multiple versions, and the version you want is almost always "whatever's latest". This could also, potentially, include your main daemons on a server—SQL servers, web servers, that kind of thing.
3) Development packages. It's common to need multiple versions and to need to switch between them frequently (due to having multiple projects with the same deps at different versions, or needing to "git-bisect" or debug a branch with older deps, that kind of thing). Some overlap with 2 (especially on servers, if only because it's convenient to manage your servers' packages with the same tool you use to manage development dependencies) but they remain distinct categories.
MacOS with Homebrew gives you 1 (macOS itself) and 2 (Homebrew). Some people try to use homebrew for 3, which tends to make them unhappy and leads to them making angry posts about Homebrew because doing that is a bad idea... but it's also a bad idea on most linux distros, which will be mixing together 1-3 if you try to use the system package manager for everything. You should be using something else for #3, at least. You shouldn't be using the system Go or Python packages unless you're targeting that specific distro at that specific major version as a deployment target.
Linux distros tend to have difficulty separating 1 & 2, in large part, I think, because of how the graphics and multimedia stacks work. This is really annoying if you're used to having nice, clean separation between those, as on macOS + Homebrew.