If you’ve hopped between Linux distributions as much as I have, you know that each major family of distros introduces you to a different package manager. At first, it can feel a bit daunting (apt on Debian/Ubuntu, dnf on RHEL/Fedora, pacman on Arch, and zypper on openSUSE), but these tools all serve the same purpose of installing and updating software.
After using Linux for years (across everything from Debian to Arch-based systems), I’ve grown comfortable with all of them. Even niche distros like Slackware, Gentoo, and Void. In this post, I’ll break down the major package managers, how they differ, and what it’s like to use each one. We’ll also touch on the universal package formats (Snap and Flatpak) that aim to work across distributions, and lastly mention a few niche package management systems. Let’s dive in!
I’ve always liked Zypper (and if I remember correctly, DNF was also fine), purely because it feels sane in everything it does.
We love to make a religion out of them, but a package manager is ultimately just a secondary tool. It installs other tools, which are what you’re actually interested in using.
So, I shouldn’t need to learn a scramble of letters to achieve that. I shouldn’t need to think about refreshing the repository listing. The less I need to worry about instructing the package manager, the better.I have been using Nix for a year now, and I am not looking back.
All regular package managers have a problem: Sometimes a system won’t work if a specific combination of packages is installed. To prevent this, package managers block those combinations. However, how does the package manager know which combination would break the system? It is tested beforehand, and a list of illegal combinations is maintained. However, this comes with a problem: How do you test every combination of packages? If a package manager tracks just 1000 packages, there are 2^1000 possible combinations to evaluate. This means that when a package manager becomes more popular, and more packages get added, relatively fewer combinations get tested, therefore increasing the chance someone breaks his system by installing a unique combination of packages, that wasn’t evaluated and apparently breaks the system. In other words: Package managers have a flaw that causes your system to break if the package manager becomes too popular. The common solution is to create a new package manager from scratch that does exactly the same thing as the old one, but isn’t popular yet, and therefore works. However, since it works, it becomes more popular, causing it to no longer work.
Nix is different. It is designed from the bottom up that every combination of packages is possible. It is impossible that one package breaks another. This creates some other advantages as well: there is no evaluation to see whether packages break other packages, allowing maintainers to add more packages to the repository. The result: even though it is not even close to the most used package manager, it is the one with the most packages in its repository.
Yes, there are problems. The biggest is that there is no easy mode yet. But that can be implemented later. For now I see Nix (or something similar like Guix) to be the future of package managers.
Sucks that nix has gone fash-mode though
My desktop is Fedora and I have a file server running Debian. I was doing updates to the Debian box through ssh and it took me way to long to figure out why dnf wasn’t working.
I’ve done Linux desktops on and off over the years but have had multiple Deb-based servers consistently for 10+ years now. Came time to commit to a desktop and I had to go Mint because I knew I’d be apt installing everything and cursing at myself if I went with anything else
Over the summer Zypper got a huge speed upgrade after decades of being one of the slowest package managers, and while Hayden James did give Zypper “the best score” (not really, (except if you assume they all got 5 in ecosystem size) all of them got 17, except Pacman that got 16), it would’ve been nice of them to mention that as I’m sure lots of people probably still have this idea of Zypper being sluggish and taking forever.
In fact, seeing as how APT is limited on simultaneous downloads, I’d wager that Zypper is actually faster than APT now. Probably faster than Nala as well.Yes, I was fine with/accepted the “slowness” before (I love zypper) & one day just suddenly it just started “skipping” the download parts & it was a huge optimization :D.
bonus:
Interesting they gave apt a higher score for ecosystem than pacman. I feel like I have to add custom repos to Debian more often than I have to use the AUR on Arch
Pacman is the best for the simple fact that it’s simple. APT, DNF etc get into the weeds with complex scripts trying to update databases and other nonsense that has caused apt/dpkg to obliterate systems for me too often (over like 10 years)
but pacman is about as close as possible to “unzip in place and go home” I’ve never had the actual pacman itself break a system. And the only broken update I’ve had is the stupid grub one which I solved by switching to systemdboot. On top of that even IF you somehow obliterated an arch system it’s trivial to chroot in, use a statically built pacman, then reinstall all system packages with a single command.
I unironically use arch in critical production systems as i genuinely find it to be more reliable. Slap on some filesystem snapshots as a just in case for any bugs from updates (never had to use) and I have a system that is so much easier to use and i feel more confident doing updates
Pacman works. And over all im an Arch fan. But whats with the esoteric flags? -S? What the fuck does -S mean? why not “pacman install myshityide”, “pacman update”, “pacman upgrade”, “pacman remove myshityide”?
You know it’s funny I actually find that I like the esoteric Flags more . They just stick in my head as unique and I’m never wondering whether I do update or upgrade or anything else that might sound right. It’s Syu, always has been :)
Pacman is the best because its called pacman and you can make the progress bars look like pacman
CachyOS has that turned on by default
For other Arch distros you can turning it on by adding “ILoveCandy” to your pacman config
Pacman has fucked me so many times, I will likely never use Arch again. rpm-ostree has always had my back.
Sounds more likely that AUR fucked you. Which isn’t pacman. I’ve often found people who hate “pacman” usually just hosed their system with the AUR
I’m very choosy with AUR. I know people hail it as the holy grail but the lack of vetting makes it “delicate”.
This is, in the best of cases, what’s being packaged hasn’t been properly tested. In the worst, you really need to read the package file and understand it enough to confirm you can trust the sources or risk being surprised.
Oh I didn’t know ostree was used by rpm, I thought it was made from scratch from the flatpak project just like bwrap is.
Even niche distros like Slackware, Gentoo,
Ooof - I’m feeling old when these are considered “niche” distros…
Well, Slackware was a main distro two or three decades ago. I give you that. Il pretty sure that’s what I installed when I installed my first Linux mid/early 99’s.
Gentoo has always been niche.
Yeah - Slackware back in the late 90s early 2K’s wasn’t as niche… Remember the Infomagic CD sets?
Gentoo got traction for a while when they made it easier to install, instead of having to go from Stage 0. Of course, I installed it from Stage 0 since I wanted to know more about the tool chain and how these systems were built – but I wasn’t masochistic enough to try to install LFS.
I had Gentoo as primary for 6 months. 6 months of an unusable computer always compiling.
I did a bit of LFS and while I didn’t get to a full desktop, it helped a lot.
Hmm - my Gentoo install was usable, but I did get tired of all the compiling for updates. Still kind of get annoyed with it now when I have to install source packages from the AUR.
I read a lot of the LFS manual, that’s what made me decide to give Gentoo a go. Seemed like an slightly easier route while still working through a lot of the build process.
I mean…mine was theoretically usable. But practically, it was compiling all the time.
I really don’t understand how can people use it. I really tried.
I think it’s something that you have to get used to… While it’s compiling stuff, you can actually be doing other things on your system. The trick was to make sure your configuration balanced your systems resources so you didn’t get bottlenecks. (For example: putting your home drive on a separate physical drive to reduce issues with writes.)
I prefer Flatpak
You can’t update your system files with flatpak.
No, you don’t.
Are you a mind reader?
Sometimes you are just right. No mind reading required.
I like pacman. Cachy here.
App images, love the fact that they exist thou sometimes graphically jarring. Sure… ever only used them for two different applications. Both pretty niche. And not available in my distro repo or flathub. Not advocating for it to become something universal,or anything but they seem pretty distro agnostic. Which I’m guessing is easier to maintain? Or not? Not a developer.
Yeah, I’ll take an appimage if that’s what I can get, but it’s not my favorite way to deal with it. I’m on Bluefin, so it’s flatpak and homebrew for me.
At least they mentioned Portage, though they did not do it justice.
Also most users don’t even have to use a package manager directly, as there are GUI frontends that manages all of this with mouse clicks. In that case, the underlying package manager doesn’t even matter, only the repositories you access to, do. I use easy to remember aliases and when I need some more features, i just look them up quickly. That does all the job I need for the most part.
KDE’s Discover is pretty magical. In Plasma 6, you don’t even need to install a bunch of separate plugins for it. Except I think they still make you sign off on Flathub (but give you instructions on how to do it)
Discover is probably the worst app in the entire KDE suite. It’s the only aspect of the Linux desktop that frustrates me, and I’m nearing 10 years of full time Linux desktop usage.
Oh, you accidentally opened Discover? Now you gotta sit and twiddle your thumbs while it updates/downloads a bunch of stuff very slowly with no way to interrupt it. It also locks the system package manager, so you literally cannot do anything else package management related until Discover slowly decides to finish doing something you never asked it to do.
I also don’t like how seemingly some parts of KDE like themes and widgets don’t seem to update through the terminal during a normal system update, you have to remember to open Discover once every few weeks and update them all separately.
Huh. I cannot personally relate to anything you’ve said there. Maybe we’re using different versions? The only issue I’ve had with package managers (aside from Flatpak file access, snap… just everything to do with snaps, and Pacman acting like it’s never heard of any of my mirrors if I haven’t updated in a couple of weeks, and official Nvidia drivers breaking my xorg.conf in half) is wiping out my entire desktop suite through Synaptic back in the day (entirely my own fault).
I suppose there are worse ways to learn to read the “these packages will be removed section”.
But Discover on an Arch based system (EndeavourOS) isn’t that great. It only supports Flatpak, not the system packages.
IIRC, it can work with pacman using
packagekit-qt
, but it’s not recommended.Huh? Well… I do prefer updating via the command line. I guess what I was seeing in Discover was just Flatpaks and stuff.
Who are ‘most users’?
I don’t understand what you mean. What’s not understandable about “most users”?
I don’t know these linux people that don’t use package managers. So I asked.
I don’t know what exactly you want to know actually. It’s a generic wording / term. I’m not talking about a specific user group or something like that. I’m just saying, “people” do not HAVE to use a commandline package manager, if the system is configured to use a GUI manager for the packages.
In example SteamOS on the Steam Deck is configured in a way the user never need to use the terminal. There is the gaming mode, without a desktop and a click updates the system. And in desktop mode there is Discover pre-configured with Flathub for Flatpaks. Users don’t have to use the terminal to install new applications or update them. Just as an example. I think openSUSE also has some GUI for that and doesn’t Linux Mint have such a GUI too? Manjaro comes with their Pamac graphical tool.
Ok, I can see that in SteamOS, users that don’t directly interact with a package manager. That seems likely.
I would say that ‘most users’ of just about any linux distro know all about command line package managers.
So, my ‘most users’ and your ‘most users’ don’t seem to be the same people.I said “most users” in the sense of “nobody has to” and refer to everyone, including you and me. We don’t have to use the commandline to update package managers, if we use a GUI for it. I didn’t mean a specific number of people do or don’t.
Well, that’s interesting. I guess linux really is going more mainstream, if that’s the more common user experience. The users I know are mostly professionals that enjoy tinkering under the hood. Thanks for your perspective, stranger.
They mentioned YUM just long enough to shit on it. I’ve never had a reason to switch to DNF. Fukit. YUM works.
Is there some amount of work involved in switching?
None that I know of. I’m pretty sure they are both installed. I think dnf has some sort of TUI. I was just never interested.
No idea, if it has a TUI, but I feel like improved performance should be good enough of a reason to switch, if there are no downsides…
I haven’t noticed any issues. It actually cleans up some old yum syntax.
I guess I should learn about that last bit. Someday …
That makes perfect sense until I contrast it with the fact that I’ve never had any sort of issue with yum’s performance. I do this crap for a living. I might carry out the same install or patching on several servers. As long as it executes in a consistent and reliable way, performance is really a secondary consideration.
Ah, so you’ve scripted a whole bunch of stuff with YUM. Then you automatically have the downside that switching over could incur hours of work.
As much as the software developer in me wants to encourage you to use DNF (or an abstraction like
pkcon
) for newer scripts, in case they want to remove YUM one day, I get not wanting to deal with two separate tools.In my head, switching over was trivial, i.e. just typing D, N, F instead of Y, U, M, because that was my experience when I switched over way back when I was still a freshly hatched penguin.
Yes, exactly. The company I work for has lots of yum scripting. I don’t hate dnf, its just not the interface I’ve used at work.
Most distros don’t really have yum anymore. DNF is actually running the command in a yum mode, so you’re really using dnf.
Well the distros in question are pretty standard. RHEL, CENT, Oracle, Rocky. Ok. At least they let me keep my interface.
Sometimes you’ve got to adapt to change.
It took me a while, but I moved off apt-get to just apt.
Habits die hard.
Sometimes they come back. I’ve re-learned to use apt-get dist-upgrade for Proxmox patching.
Nix, portage?
There’s a section at the end where they’re mentioned.