28
submitted 8 months ago* (last edited 8 months ago) by ransomwarelettuce@lemmy.world to c/linux@lemmy.ml

Just saw a post of a novice user asking why are there so many package managers.

At first I was about to copy and paste the good old "The OS is yours if you want to make a different package manager you can, and many did".

But then I though

Damn how does Linux have standards !?

And reached a somewhat of conclusion that many of the established standards were established at the early stages of the project, there are of course those who change like the transition from X11 to Wayland the upcoming desktop portals and such.

And here is my hipotesis if the GNU project came up with a good and easy to work package manager in the early days of Linux, do you think we would have so many different ones? Maybe even win the desktop war (OS not DEs)?

Edit: replace package manager with packaging format

top 13 comments
sorted by: hot top controversial new old
[-] cerement@slrpnk.net 17 points 8 months ago* (last edited 8 months ago)
  • xkcd: Standards
  • one of the most unappreciated aspects of any package manager is how they handle dependency resolution – the modern formats (Flatpak, Snap, AppImage) “solve” the problem by completely ignoring it altogether and just shoving everything-and-the-kitchen-sink into one blob – which works great as long as storage remains cheap or you’re not trying to develop for embedded systems
  • GNU has a package manager – and it’s being used in a current distro
  • GNU development tends to be glacial even compared to something like Debian – the GNU kernel is 33 years old at this point …
[-] Kusimulkku@lemm.ee 5 points 8 months ago

Flatpak uses runtimes, which is sorta a middle point between traditional package way and and bundling everything. Quite a nice compromise imo

[-] toothbrush@lemmy.blahaj.zone 3 points 8 months ago* (last edited 8 months ago)

doesnt guix use the guix package manager?

Shoutout to the guix package manager, its really cool!

[-] cerement@slrpnk.net 3 points 8 months ago

had to doublecheck myself …

  • yes, Guix uses the Guix package manager
  • but apparently the Guix package manager is built off (at least the concept) of Stow ?
  • [and then some people also seem to like using Stow and Guix together (similar to using Home Manager with Nix package manager)]
[-] toothbrush@lemmy.blahaj.zone 1 points 8 months ago

Interresting. I didnt know it was using stow somewhere! Btw there is a guix home since last year, that works similar to nix home manager.

[-] nyan@lemmy.cafe 8 points 8 months ago

Linux mostly follows POSIX standards, even though it's never been certified as compliant, so much code targeting POSIX systems runs on Linux too. In other words, it didn't establish any standards so much as adopt one that already existed.

There is no POSIX standard for package managers, however.

[-] ransomwarelettuce@lemmy.world 1 points 8 months ago

Yeah that's my daydream, imagine if there was one from the start.

[-] nous@programming.dev 6 points 8 months ago* (last edited 8 months ago)

Damn how does Linux have standards !?

Linux has standards where interoperability is important. The more things needs to talk to each other the more they need a common standard to talk over. Things like X11/Wayland don't have many alternatives as so many things need to talk over them. The only reason there are two standards here is because X11 has massive limitations that cannot easily be worked around.

For package managers applications don't care about them. Interoperability only matters within a single distro. So people are more free to create what ever standards they want for their own distros. And when people can choose people have opinions and these opinions evolve over time. Which results in multiple competing products that effectively do the same thing.

And here is my hipotesis if the GNU project came up with a good and easy to work package manager in the early days of Linux

Probably, but creating a good, easy to work, fast and reliable package manager that meets everyones needs when you are discovering how you want it to work for the first time is extremely hard. And even if you created a perfect one at the start, requirements can change. This happened with X11, and even with package managers seeing the rise of things like flatpack, snap and appimage that all work fundamentally different from the traditional ones.

[-] ransomwarelettuce@lemmy.world 2 points 8 months ago

OK maybe what I meant was a packaging format and not a package manager, above there was a user that mentioned that all distros have their quirks and kinks, if GNU created a package manager that worked perfectly at first time maybe it's adoption would go across the distros but as u said to make it perfect the first time is something hard and even harder on early days where nothing was set on stone and there would be always the odd one that would make their package manager.

But if we all agreed early on, one one packaging format (which of course would have to go through many iterations to reach a stable state ) all package format wars would be over and in well implemented ecosystem of package managers of each distro, it would be also an somewhat interoperable one.

[-] nous@programming.dev 5 points 8 months ago

The package format is almost irrelevant TBH. Most packages are not interoperable between distros due to the versions and names of dependencies. That is not something that gets fixed by a standard package format. Packages don't even work well between different versions of the same distro. largely due to libc - anything that depends on that is built against a specific version and when you upgrade it you need to rebuild and install everything that depends on it. Similar problems exist for all compiled dependencies on a distro.

And while some packages of the same format can be installed on multiple distros (mostly those based of the same foundation) most cannot. This is what the newer package formats (like flatpack) are trying to solve - by including all dependencies inside the package.

So a standard format does not really solve those issues, so there is little advantage for one. At least not one of the old school formats. And the wars are not really over the format, they are over the tooling required for that format. At the end of the day RPMs, DEBs, and arch packages are just tarballs of files and some meta data (and there is even a tool that can convert between them - though anything with dependencies quickly becomes a complete mess). It is the build and install tooling that makes all the difference.

[-] ransomwarelettuce@lemmy.world -1 points 8 months ago

Oh ... thx for the insight, it was a daydream anyways looks like the only solution is cloud native if one wants uniformity, still a bit hesitant to have a system so stable I can't change it's core filesystem.

[-] AProfessional@lemmy.world 5 points 8 months ago

It would change nothing, my comment there still applies: https://lemmy.world/comment/4941072

The format really isn’t interesting at all. It is the policies and choices for the software in them that matters and will never be agreed upon.

[-] ransomwarelettuce@lemmy.world 3 points 8 months ago

Yeah of course I get your argument although we have rpm (or deb in debain based distros) across redHat and OpenSUSE it does not mean that the same rpm package would work on both systems due to distro specific aspects (like different root structures, init systems etc . . .), but that's something for the package manager to solve, the package format could be agreed upon, which would ease the workload of developers and maintainers since the moment you know the target distros of a package they could see the base differences of said distros and add symlinks, dependencies, environment variables, services ... as needed for the package.

This seems like it could lead to a whole lotta of conflicts, but I think if the daddy distros were designed all with one package format in mind, such format could be somewhat interoperable.

this post was submitted on 02 Nov 2023
28 points (93.8% liked)

Linux

45457 readers
1296 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

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS