- cross-posted to:
- linux@programming.dev
- cross-posted to:
- linux@programming.dev
One of the strongest points of Linux is the package management. In 2025, the world of Linux package management is very varied, with several options available, each with their advantages and trade-offs over the others.
Wow, something positive about Linux package managers?
I’ve been hearing nothing but bitching and moaning for the past 10 years for no reason, to the point where I’m suspecting that this is Microsoft sponsoring a bunch of assholes to keep posting negative things about Linux.
Package managers are awesome and always have been afaiac.
Package managers are great.
You’ve been hearing about Snaps specifically.Oh no, snaps are the worst.
I’m talking apt and RPM, specifically
These package managers are essentially the utopic vision of what apple and Microsoft wishes it could be
Flatpak is literally installing a second Linux distribution on your machine, just without a kernel. All the dependencies right down to the C library are installed in the Flatpak environment. This why you can run a Glibc Flatpak on a musl distro.
Microsoft could support Flatpak “natively” on Windows. It could use the same kernel and GUI glue that WSL uses but you have no need of specifying a distro or getting to the command-line. The experience could just be that you go into Flathub, install and remove apps, and everything would just work.
Apple could do the same with macOS.
If they did that, Flatpak could be a universal app distribution method on all three systems. Devs would only have to create and maintain a single version if they wanted.
Microsoft will not do that of course. If it really was a brainlessly simple alternative application store, they could OS/2 themselves and loose control of the platform.
Too bad though. It would be cool. No reason it could not be done independent of Microsoft of course but it would never be as popular if it was not built in.
In 2025, the package manager and frequency of updates are the only real differences between most distributions. I’ve been enjoying Flatpak for years now and hope it continues to build momentum. It offers the possibility of shared effort between distributions who depend on legions of volunteers constantly updating debs/rpms/whatever.
It feels like one of the last hurdles to eliminate so much of the duplicated effort associated with all these distributions.
Amen.
Don’t mind me, being a casual user since 2014 taking down notes as I’m reading the debates in the comments.
But I finally found out why Steam kept crashing. Snap broke it. I forced it to run as a flatpak, and now it works exactly as intended. Literally what made me finally switch from Ubuntu to Mint.
Linux Mint is based on Ubuntu. Wouldn’t it be better to go for one of the distributions everything else is based on? Debian or Fedora?
pacman is the best and I’ll stubbornly refuse to entertain any other opinion. It’s in my experience the least likely to just randomly rip the system to shreds. I don’t know if it has more through prechecks or what bit I’ve had debian and Fedora (apt and dnf) rip the system asunder trying to jump multiple major versions in an update of a system that hadn’t been online in a long time.
I don’t care if jumping multiple releases at once “isn’t supported” it shouldn’t be that frail and arch will happily update something many years behind as long as you update the keyring.
Even in the event your system somehow does get hosed you can fix almost everything by just chrooting in, grabbing the static pacman binary, and running “pacman -Qqn | pacman -S -” I’ve recovered systems that had the entire /bin wiped (lol oops moment with a script) and as far as i know apt and dnf have no equivalent easy redo all.
emerge or gtfo
Wouldn’t flatpak inherently be less likely to rip the system to shreds?
you have a very limited understanding of flatpack if you think you can use it to install your init system.
Pretty good article, went into some technical stuff, which surprised me as in Linux world I’m used to articles discussing changes in wallpapers between different distro releases :D
Thanks for posting that was really informative i was always intending on learning more about package managers at some point. What I wonder is when you want a package and it’s available as both a dnf package and a flatpack which one should you chose?
Native then Appimage then Flatpak. Security is the same in the end, but in Flatpak with extra steps, while Flatpak has a huge framework that can fail too.
Appimmages seam a lot like reverting to the old way of downloading packages like the installers you see in Windows and macos are appimages somehow better or different?
I would rather compare appimage to PortableApps, except it bundles dependencies too.
OK that makes sense, thanks.
Native, Containers, Appimages. Flatpak not in a million years.
I really don’t know how to feel about all the Mint/flatpak supporters. It feels like a swarm of Windows refugees that have no interest in learning about the existing culture.
Flatpaks, Gnome, KDE, they’re all just bloat. Back in the 90’s, Unix/BSD/Linux were everything that Windows wasn’t. Fast, stable, infinitely flexible. I cherished grepping for Exim config settings in /etc rather than searching through 250 management console tabs for MS Exchange.
I run Arch and nearly everything I need is available as a package or in the AUR, except for the real niche apps that I can grab via cargo/pip/npm/podman. Occasionally however I find some app I’m interested in and they only support Ubuntu or Flatpak, and I feel like it’s getting worse so it’s not like I can just ignore it.
I’ve tried in the past flatpak packages, they are terrible in many senses the proponent (vast majority AFAIK) don’t say, among them:
- They create huge static binaries
- One gets many libraries embedded in the static libraries or local static libs to the package which are often repeated among many static binaries, even the same version of them. This is totally avoided when building against dynamic native libraries.
- When installing a pletora of static dependencies for a package, lets say liri, a bunch of the stuff it requires might already bi installed natively in your system, but they need the static deps locally part of the package.
- Care must be applied, there are statistics available about abuse on vulnerabilities infection on pypi, npm and so on, this no different on these packagers repos/hubs.
Good that they provide an alternative way to install packages not available in your distro repos, but for that user repositories building against native libraries are a much better option, like AUR in the case of Arch, and even their binary packages coming from other distros or from upstream might be even better than those universal static binaries providers.
There are political aspects involved in the past claim from the proponents, and it’s that in their view gnu+linux echo-system should become like the windows one, where everyone company or org (to them doesn’t matter) should be able to provide their binary packages, and then there’s no reason to think of anyone being able to build their staff.
There’s a tendency actually on providers on those hubs, to ignore problems on people who tries to build their stuff on their own, claiming they only support those universal packages. Which to me it’s dangerous, since it goes in detriment to the ability to build and distribute the software, which might not be due to licenses, but rather practical reasons. This might actually be against the licenses they use, but now a day who cares, right, it’s available on that packager repo…
Lastly one argument provided in favor of the apps coming from those universal packages is sandboxing. But there’s firejail which can be install on most gnu+linux distributions, and comes with profiles for a pletora of apps, and if sandboxing is not enough, it can easily be combined with apparmor, or if you prefer selinux might be used… No need for those universal packages to have a sandboxed experience.
One final note, so far gnu+linux has been characterized by having a diversity, which is good, that diversity offers people options to choose from, and a lot of different solutions for different purposes. Not so long ago the claim was that it was not good, that meant fragmentation, and fragmentation is bad for adoption and maintenance. I see it the other way around, this diversity allows for choosing for what aligns better with the user intends, like easy to use, or rolling release, or as vanila as possible, or as up to date as possible, or as hardened as possible, etc, etc. Systemd is another example of this universalization intended. Perhaps some distros prefer to be a shell for systemd and get packages just from universal packages, that’s bad news to me.
Of course having universal packagers present an oportunity for corps and orgs to also provide stuff on the gnu+linux platform, but in my mind the best would be for them to offer free/libre and open source software, that would build on any system and be provided by any packager that wants to offer it. Though I believe that to be too idealistic perhaps. Jeje.
To understand how to interpret these complaints, we need to understand that Flatpak works by essentially installing a second set of libraries for your apps to run on. The apps run in a container (much like Docker) on top of these libraries. Flatpak uses the kernel and display server from your main distro but otherwise Flatpak is like a second distro unto itself.
So, if you only install a Flatpak app or two, it is very true that they will require quite a large number of support libraries to run (just like running one app on your distro is more distro than app space wise). However, as you add more apps, they they resuse the libraries that the first apps installed.
Because Flatpak installs all its own support libraries, the apps run the same on all distros (which is the point).
So, Flatapak does duplicate the libraries on your system out of necessity. Because your Flatpak apps does not use any of the libraries from your host system. However, they are only installed once inside the Flatpak environment.
The comments about vulnerabilities are neither here nor there. You have to trust your distro. You have to trust Flatpak (as a second distro). Both are subject to vulnerabilities and supply chain attacks but neither more than the other. Flatpaks are technically after as the container environment they run in “sandboxes” your Flatpak apps. In practice though, they require enough permissions that the sandbox is trivial to escape. So not much difference.
cons:
- dependencies
we get it and don’t care. they’re convenient and work well.
I know most don’t care. I initially stated most people don’t agree with me. This is just my take on universal packages in general. I really like and appreciate the typical shared libraries native to most distros. It’s OK we disagree, I only hope we don’t end up with empty shells with systemd and everything else on app stores…