Snapcraft, AppImage, and Flatpak ... which one is the best?

Robert Washbourne - 3 years ago - open source news, distributions

Distro agnostic installation of packages is a long time coming. There are literally thousands of different distros, and a fair amount of them implement their own package managers - that means there are dozens of different package systems to develop for. This is where cross-distro packages come in. There are 3 major systems: Flatpak, AppImage, and Snapcraft. Snapcraft is by Ubuntu, and the other two started as individual projects.

Snapcraft

Why Snapcraft?

Snapcraft is a project developed by Canonical (parent company of Ubuntu). Their website says that snaps are packages that are "for every Linux desktop, server, cloud or device, and deliver updates directly". This is a bold claim - their website also points out that snaps update automatically. It's not really clear what the difference is between snaps and deb packages - you need to install services to get snap to work, so it's basically just installing another package manager on your system.

It does come with the benefits of a package manager though: A central repo, managed updates. Their sandboxing is provided by AppArmor, Ubuntu's app permission management software.

Install

sudo pacman -S snapd Ubuntu sudo apt install snapd Debian # On Sid: sudo apt install snapd Fedora sudo dnf install snapd # Fedora 24 users sudo systemctl enable --now snapd.socket Gentoo ###Arch Install the overlay. OpenSuse sudo zypper addrepo http://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_42.2/ snappy sudo zypper install snapd

Snapcraft Directory

(1012 apps at time of writing) UAppExplorer

AppImage

Why AppImage?

AppImage is by far the simplest solution of the three. To use an AppImage, you simply add permission to execute the file and then run it, the same way as running a bash script. However, not everything is sunny: there is optional sandboxing, and to install an update, you have to replace the entire installation (there is a basic updater but not many projects use it).

To try it out, I installed Etcher, a program to burn iso files to disks. Here is the process (I am doing the entire process through the GUI. Installing an AppImage from the shell is just as easy).

1. Download the Etcher 1.1.2 AppImage

2. Extract the zip file and open the extracted files.

3. Right click the `.appimage` file, select properties, and ensure that "allow executing file" is checked.

4. Double click the AppImage file

Although easy to install, the pain comes after a few months. I think that a system using AppImage as the main software management tool would be a pain; it would have to replace all installations every few months.

AppImage Directory

(120 apps at time of writing)

AppImageHub

Flatpak

Why Flatpak?

What makes flatpak different from both Snapcraft and AppImage is that is brings shared, constantly updated runtimes (e.g. the kind of libraries that make Steam a mess to install on distros that are not Ubuntu) into the picture. Unlike AppImage, libraries/runtimes do not need to be bundled, reducing file size of apps and providing a much cleaner, auto updating experience. (Also, it's integrated into gnome-software already...)

One of the caveats is that there is no central repo. For every new app from a different developer, you have to add a new repo. Sandboxing custom, with SELinux support.

Install

sudo pacman -S flatpak Ubuntu sudo add-apt-repository ppa:alexlarsson/flatpak sudo apt update sudo apt install flatpak Debian sudo apt install flatpak Fedora sudo dnf install flatpak Gentoo ### Arch Install the overlay. OpenSuse sudo zypper install flatpak

Flatpack Directory

(88 apps listed on their website at time of writing)

Flathub

Conclusion

Feature Snapcraft AppImage Flatpak No software necessary to install a package No Yes No Shared runtimes Basic None Full Sanboxing AppArmor None Custom Repository support Yes No Yes Central repo Yes No No Updates Automatic None Automatic

Personally, I would bet on Flatpak. A lot of it is similar to Snapcraft, but I found the installation (on distros other than Ubuntu, e.g. Arch) of Snapcraft a lot more difficult and buggy, and the updates and install process of Flatpak was easier. Even without a central repo, the process seems more solid.

Their shared library system works across any distro automatically, and they include more variety and better apps (Steam is actually packaged as a Flatpak now! Goodbye difficult install on Arch). Also, the awareness of Flatpak is better in the Linux community; Google "Snapcraft" and the first result is a Minecraft server.

Even though AppImage has Linus Torvald's vouch, Flatpak beats it through smaller app files and better updates - even though you need to install a package to start using Flatpak, the features it provides are much better in the end.

Don't agree? Share your thoughts below