For many of us who actually started our Linux journey by using Ubuntu Linux, which by statistics is the most popular and most used Linux distribution at the moment, got familiar with downloading, installing and using .deb
package format for Debian Linux, on which Ubuntu is based plus many other Linux distributions such as popular penetration testing operating system Kali Linux , gaming focused SteamOS, desktop-oriented distribution developed by Raspberry Pi Foundation for a family of low-power single-board small computers among others.
As a new Linux user, one will realize the vast number of distributions available with multiple versions and more so the pain of working with different software packaging formats and handling dependencies at the same time.
But in the latest release of Ubuntu Linux, Xenial Xerus LTS, Canonical introduced a new software packing format and tools called Snap, which will be used along side .deb packing format. In an announcement early this year, made by Canonical’s Olli Ries, he elaborated how the technology behind Snaps actually came about, how it will exist and work alongside the old Debian software packing system, its significance and general functionality plus so much more.
There are also other new software packing systems already working to battle Snap in the game, and these are Flatpak and AppImage, we are going to get a clear understanding of what these technologies are, how they work and where they literally stack in the Linux ecosystem.
What is Snap and How does it work?
This is a software packing format that bundles software including its dependencies into a single package, it is installed in a separate directory from other system directories unlike other old software packing formats such as .deb
, .rpm
plus many others. In this way, a package does not cause a clutter on your system reducing the risk of breaking the rest of your Linux system.
You can take a look at how Debian Packaging System and RMP Packing System work to understand how they distinctively work in comparison to Snap.
One advantageous property of Snap to users is that it works on multiple Linux distributions including Debian, Fedora, Arch of course Ubuntu and many of its derivatives such as Kubuntu, Lubuntu, Ubuntu MATE plus many others in that family. Users of REHL, CentOS, Elemetay OS, Linux Mint, Gentoo, OpenSUSE will have to wait as validation is on going and once approved, they will be able to use it.
It also offers a secure package management mechanism as the installed packages will work in an isolated system on Linux, this limits the security risks that come with other software packing systems.
While on the developers’ side, the whole idea of Snaps is also complemented by the use of Snapcraft, which enables developers to easily work on software for different platforms that is mobile, PC, server and IoT devices by helping them bundle software and dependencies into a single package. This will do away with difficulties in the packing process plus handling of the updates by users as compared to the past methods.
What is AppImage and How does it work?
This is also a software packing format that works in its own fashion as compared to the traditional software packing systems. It works in a comparable analogy to Snap, under it, an application is bundled together with all its dependencies in a single file, hence the idea of one app equals to one file.
It is so simple and fast to use AppImage format applications, there is no need to install applications as before, all you need to do is download the application, make it executable and run it, as simply as that. As is with Snap, the rest of your system remains unchanged and this also offers a great security enforcement mechanism on a user’s system.
AppImages can fundamentally and importantly run on any desktop Linux distribution there is and it therefore works closely in relation to how applications are used on Windows and Mac OS, one can think of AppImgaes as portable Linux apps.
Also read: OrbitalApps’ Portable Linux Apps for Ubuntu 16.04
One limitation of this software packing system is that it works efficiently on desktop Linux, but System Administrators using desktop environments on their servers may take advantage of it as well.
Checkout how to bundle your applications into AppImages from this Wiki
What is Flatpak and How does it work?
Flatpak is also a relatively new technology built from scratch, to enable users to install and run the same desktop application on multiple Linux distribution and with different versions. Designed and built to isolate applications from each other and the rest of the system, it also puts a lot of emphasis on security implementation in a host system.
It also functions in a related approach to two previous software packing formats, the application is packaged together with all its dependencies into a single bundle, underneath a Flatpak application is a collection of runtimes, a collection of shared libraries which are shared by multiple apps on the Linux system. This means that users do not need to worry about updates in relation to distribution version changes.
You can learn how to create, install and run Flatpak apps from here.
After a critical analysis and understanding the above technologies, you will come to a realization of the following important points:
- The main goal is to develop distribution independent applications formats.
- They all focus on isolation of the working of applications from each other and from the rest of the system.
- Their implementation focuses greatly on providing mechanism to improve security of a users system in relation to how traditional systems actually alter the system upon installation.
- These technologies are all about making it easy for users to install and update applications.
- And lastly, they help reduce the workload on developers in terms of developing applications for different distributions.
In conclusion,
With Ubuntu’s Snap software packing format already being used on many Linux distributions, one may say it is bound to be embraced as an efficient and relevant alternative to the old packaging formats, as many Linux software developers and user anticipating it to become the dominant technology in the future on the Linux ecosystem. One limitation for AppImage and Flatpak will be their significance on only desktop Linux distributions.
Quote:
———–
In this way, a package does not cause a clutter on your system reducing the risk of breaking the rest of your Linux system.
———–
You know if clutter means redundant, doubled and quadrupled files and instead of all like type files (like libraries) in their proper folder, snap / flatpak / appimage does exactly the opposite of what they should do, create clutter. Packaging systems like RPM and DEB by the way are EXACTLY designed to not break the system, they will never overwrite an existing lib or file that is owned by another program, thus increasing stability of the system. I’m curious how the experiment will go, especially snap, since all tools will come in that format. Shared libraries will no longer be shared, package sizes will skyrocket, updates will take a lot longer and generally RAM usage will go up. Will it go up to the level of Windows, where you can barely run the OS with 2 or 4 GBs? Time will tell.
I think it is great to have apps that run everywhere, but having the whole OS like this might be a really bad idea. I doubt that a Linux that is built as such would be able to run on 512 MB or 1 GB of Ram like the Raspberrry Pi (like Windows as an example cannot). I wish there was an easy workable way to use statically linked DEBs and RPMs, because…. that would EXACTLY solved this problem, with a well established super stable packaging system, instead of having to create a new one (or in this case, 4 of them)
It was badly phrased.
‘Package can be freely developed without causing a conflict on your system, reducing the risk of breaking… but at the expense of using disk space to store it’s own set of libraries and files’ might have been better.
Something I never stopped missing was the ability to find an application, download it and run it (with Windows). With Linux, you find your .deb, try an install then it fails because ‘lib.so’ is now version 4 but this package wants version 3… so it fails.
The snap/appimage etc actually do use more filesystem space but allow developers to give us something that can run with the newest available library at the time of creation, not necessarily the one available in our system and without the need to use a PPA to upgrade the system (and probably break something else at the same time).
I find synaptic/apt/PPA to be lacking in many areas – brilliant, but also lacking – and totally see the need to add a choice of an ‘executive’ file.
“With Ubuntu Snap software packing format already being used on many Linux distributions” – What does that even mean?
Would be nice to know how Snap and Flatpak can exist at the same time on the computer.