this post was submitted on 24 Jan 2024
106 points (84.4% liked)
Linux
48090 readers
754 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
The way I understand it is like this:
The grand theory of classic package managers is the idea that lots of programs all need the same core libraries to function. An analogy would be like noticing most construction jobs need
nails
. So instead of making everyone bring their own copy ofnails
, resulting in dozens of redundant copies of it lying around, they have a singlenails
package that everyone can use.But there are different versions of
nails
out there. Each version picks up unique new features, and drops legacy ones. Recent builds may incorporate and thus require the new features, making them incompatible with old versions ofnails
that don't have them. On the other hand, some builds may still use and rely on legacy features ofnails
, and are thus incompatible with the new versions. You may run into a scenario where you want Software A that needsnails
version 14+, but also Software B that can only run onnails
v <13, and you just can't, because they don't overlap.Additionally, there may just be a totally different competing package out there,
screws
, that does largely the same job asnails
, but in a completely different way that is totally incompatible with projects that expectnails
. So if you need Software C that relies onnails
, but also Software D that relies onscrews
, you might cause problems by installing both.What a distro is is essentially a group of devs declaring that they are putting together some specific list of libraries (like, say,
nails
v14), and then sculpting up a bundle of software around those specific libraries. Can't cope withnails
v14? That sucks. No package for you, then.In that sense, distros are differentiated by what libraries and other low-level system softwares are available to the programs you wish to install on them. If you want your program to be available natively on every distro, it needs to be compatible with every competing set of libraries each distro has elected to use.
It is possible to just say "fuck it" to the distro's built-in libraries, and instead bundling the specific version of
nails
orscrews
or whatever you project needs directly with it. Build your own with blackjack and hookers, as it were. That's exactly what Flatpak does, among others. But it's trading flexibility for redundancy. In the age of cheap and plentiful storage memory, many people think this trade is well worth it. But it makes many formalists cringe.