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 example, Debian and its derivatives such as Ubuntu use
.deb packages managed using the DPKG package management system and distributions in the RHEL (Red Hat Enterprise Linux) family use
.rpm packages 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.
Snap is a popular open-source application/package format and package management system developed by Canonical, the makers of Ubuntu Linux. Several Linux distributions now support snaps including Ubuntu, Debian, Fedora, Arch Linux, Manjaro, and CentOS/RHEL.
A snap application is a cross-distribution application bundled with all its dependencies (dependency-free) for easy installation 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.
Because they run under a 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:
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, Arch Linux, and also run 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 own 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.
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.
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.
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.
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.