Package management or software installation on Linux systems can be very puzzling especially for newbies (new Linux users), as different Linux distributions use different traditional package management systems. The most confusing part of it all in most cases is package dependency resolution/management.
For instance, Debian-based distributions like Ubuntu and Linux Mint utilize .deb
packages, which are managed through the dpkg package management system.
On the other hand, RHEL-based distributions such as CentOS Stream, Rocky Linux, and AlmaLinux use .rpm
packages, which are managed using the rpm package management system.
In the last few years, package management and distribution in the Linux ecosystem have never been the same after the rise of universal or cross-distribution package management tools.
These tools allow developers to package their software or applications for multiple Linux distributions, from a single build, making it easy for users to install the same package on multiple supported distributions.
In this article, we will review the top 3 open-source universal or cross-distribution package management systems for Linux.
Table of Contents
1. Snap – A Universal Package Format
Snap is a popular open-source application/package format and package management system developed by Canonical, the maker of Ubuntu Linux. Several Linux distributions now support snaps including Ubuntu, Debian, Fedora, Arch Linux, Manjaro, and CentOS/RHEL.
Easy Installation and Updates
A snap application is a cross-distribution application bundled with all its dependencies (dependency-free) for easy installation with automatic updates (applications are always up-to-date) on any Linux distribution that supports snaps. A snap can run on a desktop, server, in the cloud, or IoT (Internet of Things).
To create or snap an application, you use Snapcraft, a framework, and a powerful command-line tool for building snaps. To install and use snaps in Linux requires you to install snapd (or the snappy daemon), a background service that enables Linux systems to work with .snap
files. The actual installation of snaps is done using the snap command-line tool.
Security and Isolation
Because they run under confinement (different and configurable confinement levels), snaps are secure by default. Importantly, a snap that needs to access a system resource outside its confinement employs an “interface” that is carefully selected by the snap’s creator, based on the snap’s requirements. This enables you to run applications without compromising the base operating system’s stability and flexibility.
Additionally, the snap package management system uses a concept called channels (which consists of and is subdivided by tracks, risk levels, and branches) to determine which release of a snap is installed and tracked for updates. Snaps also auto-update, a process that you can manage manually.
To find and install a snap, search for it in the snap store (a place where developers can share their snaps) or read more about it using our guides:
2. Flatpak – Cross-Distribution Compatibility
Flatpak is a well-known open-source framework for distributing desktop applications on Linux distributions. Developed by an independent community, Flatpak allows a single application build to be installed and run on virtually any Linux distribution.
It supports a total of 25 distributions including Fedora, Ubuntu, RHEL, CentOS, OpenSUSE, and Arch Linux, and also runs on Raspberry Pi.
Flatpak’s runtimes provide platforms of common libraries that an application can leverage. However, it also makes it extremely easy for you to have full control over dependencies, you can bundle your libraries as part of your application.
Flatpak comes with easy-to-use build tools and offers a consistent environment (same across devices and similar to what users already have) for developers to build and test their applications.
Sandboxing for Enhanced Security
Flatpak makes things safe by putting each app in its sandbox, this way, apps can’t mess with the main system or other apps. It’s super handy when you’re dealing with apps from sources you’re not sure about.
User and Developer-Friendly
A useful aspect of flatpak is forward compatibility where the same flatpak can be run on different versions of the same distribution, including versions yet to be released which developers. It also strives and continues to be compatible with new versions of Linux distributions.
If you are a developer, you can make your application available to Linux users via Flathub, a centralized service for distributing applications on all distributions.
3. AppImage: The Portable Alternative
AppImage is also an open-source package format that allows developers to package an application once, that runs on all major Linux desktop distributions. Unlike the previous package formats, with AppImage, there’s no need to install a package. Just download the application you intend to use, make it executable, and run it – it’s that simple. It supports most 32-bit and 64-bit Linux desktops.
No Installation Needed
With AppImage, there’s no need to install anything. You can put these packages on a USB drive, share them, and run apps without changing your system. This is great for portable Linux and live systems.
Wide Compatibility
AppImage comes with many advantages. For developers, it enables them to reach as many users as possible, no matter the Linux distribution and version users are running. For users, they do not need to worry about application dependencies as every AppImage is bundled with all its dependencies (one app = one file). Trying out new versions of applications is also easy with AppImage.
For system administrators who support a large number of desktop systems and normally block users from installing applications that could potentially break systems, they do not need to worry anymore. With AppImage, the system remains intact as users do not have to install apps to run them.
Comparing the Trio: Snap, Flatpak, and AppImage
Here is a comparison of the three universal package managers:
Feature | Snap | Flatpak | AppImage |
Package format | Self-contained, compressed file | Self-contained, compressed file | Single executable file |
Sandboxing | Yes (by default) | No (by default) | No |
Automatic updates | Yes | Optional | No |
Installation | Requires snapd daemon | Requires Flatpak runtime | Does not require installation |
Root privileges | Requires root privileges to install | Does not require root privileges to install | Does not require root privileges to run |
Which Package Manager Should I Choose?
If you are looking for a secure and easy-to-use package manager with automatic updates, then Snap is a good choice. If you are looking for a more flexible package manager that can be used to package any type of application, then Flatpak is a good choice. If you are looking for a package manager that does not require installation or root privileges, then AppImage is a good choice.
It is also important to note that all three package managers are still under development, so there may be some bugs or missing features. However, they are all actively maintained and updated regularly.
Conclusion
Universal or cross-distribution package formats are the next-generation technologies for building and distributing software in the Linux ecosystem. However, traditional package management systems are still holding their ground.
What’s your thought? Share it with us via the comment section.
I totally agree with you in this. It’s only cross-distribution and not universal. I don’t know why modern technical journalism has the same problems as mediocre political press full of inaccuracies. In fact, snap have generated more problems than solutions and all three solutions populate your disk with unnecessary software, like Microsoft bloatware who the community always stays away.
The real solution for non-technical users is to empower graphical front ends who resolve these dependencies in a silent background and not remake the packaging systems again and again. There is the typical problem introduce by so much pride and lack of consensus in the free software community.
@alex
Many thanks for sharing your thoughts with us.
How can any of these products claim to be “universal” if there are three of them? Universal means “one and only“. If any of these products were true “universal” they would be capable of working with the other two formats.
If any of these products were true “universal” they would be capable of working with ALL Linux distros. They don’t. Each product has its own set of distros that it works on and that is it. Calling any of them “universal” is like calling any Linux distro, even Ubuntu, “universal”.