Comparison: Snap vs Flatpak vs AppImage

29/12/2020
Chưa phân loại
New packaging formats like Snap, Flatpak and AppImage are providing distribution agnostic packages that work on most Linux distributions. This solves packaging problems faced by app developers who want to distribute their apps on multiple Linux distributions. Now they can focus on one build that works everywhere instead of going through different packaging standards.

This article will list the main differences between these three packaging formats from end users’ perspective. Differences in packaging architecture and ease of packaging from developers’ point of view won’t be covered here.

The table below summarizes the main differences between Snap, Flatpak and AppImage file formats. Most of them are self-explanatory, other points have been explained below the comparison table.

Snap Flatpak AppImage
Android Like Permission Controls Toggles (GUI and CLI) Yes Yes No
Sandboxing Support Yes Yes Yes
Sandboxing Mandatory Yes Yes No
Native Theme Support Yes (with caveats) Yes (with caveats) Yes (with caveats)
Support for Bundled Libraries Yes Yes Yes
App Portability Yes (with caveats) Yes (with caveats) Yes
Fully Contained Single Executable Support (similar to .exe files in windows) No No Yes
Online App Store Yes Yes Yes
Plugins for Desktop App Store Software Yes Yes No
Multi-version Parallel Apps Support Yes Yes Yes
Automatic Updates Yes Yes Yes (with caveats)
Chrome OS Support (through Crostini containers) Yes Yes Yes
App Size Varies but higher than AppImage Varies but higher than AppImage Lowest
Number of Apps Available in the App Store Highest Lowest Somewhere in-between

Permission Controls for Users

Snap provides both graphical and command line interfaces for user controlled permissions. You can use the preinstalled “Ubuntu Software” app to manage permissions of a snap app.

To see permissions of a snap app using command line interface, run the command below:

$ snap connections chromium

Replace “chromium” with the name of your snap app.

To see a list of all installed snap apps, run the command below:

$ snap list

To grant camera permission to chromium snap, use the command below:

$ snap connect chromium:camera

To revoke the camera permission, run the command below:

$ snap disconnect chromium:camera

Appropriate commands for permission management can be found in “Plug” column (shown in the screenshot above).

Flatpak also provides an interface for granting and revoking permissions. You can use GNOME Software app (requires GNOME 3.32.x) to manage permissions using a graphical method. To see permissions of a flatpak app, run the command below:

$ flatpak info –show-permissions org.kde.Platform

Replace “org.kde.Platform” with the name of your Flatpak app.

To view a list of all flatpak apps installed on your system, run the command below:

$ flatpak list

To change the permissions of a flatpak app, you have to change the values of variables shown in the screenshot above. For example, the command below will make entire filesystem available to a flappak app:

$ sudo flatpak override org.kde.Platform –filesystem=host

AppImage doesn’t support granular permission controls as of now, but developers have hinted that Android style permission controls may be implemented in the future.

Sandboxing

Snap, Flatpak and AppImage support sandboxed app environments out of the box. A sandbox is an environment (or container / filesystem / archive) that is completely isolated and aloof from the host system. Any interaction with host system is done using limited API and permission controls. Some of these permissions explicitly require opt-in by users or can be disabled completely by end users. A sandboxed app is secure than any other app that has full access to the host system. All Android apps run in a sandbox and these three packaging format work on similar idea.

Native Theme Support

All three packaging formats support native look and feel for GTK and Qt apps, albeit with some limitations. For instance, Snap and Flatpak require system themes to be packaged in their respective formats. If you are using third party themes and icons packs, you may not get correct theme, cursor and app icons. The integration has improved overtime but they slightly fall short in comparison with apps installed from official package manager of a distribution.

App Portability

An AppImage app is a single executable file (similar to Windows’ .exe files). You can easily share it between systems or upload to cloud. Snap and Flatpak apps can be made portable by including the app itself, as well as child repositories that the app depends upon. However, the process is not as easy as AppImage and requires using multiple commands to achieve the same results.

Automatic Updates

Snap and Flatpak apps are installed from centralized application repositories and apps can be automatically updated without user intervention. AppImage lacks a robust automatic update mechanism. Users have to manually download new AppImage binary and replace existing one to install updates. AppImage app maintainers sometimes include their own update mechanism that periodically checks updates availability on their servers or requires user intervention. Recently, AppImage developers provided a tool to update existing binaries by providing delta updates. However, it still requires downloading the update tool and manually using it with an existing AppImage binary. There is no hands-free update mechanism available for AppImage yet.

App Size

AppImage has lowest app size footprint, most probably because it serves binaries in compressed format. Snap and Flatpak app sizes vary greatly from app to app and it is difficult to ascertain which provides lower installation size. Just for reference, Inkscape AppImage at the time of writing this article was around 98 MB, Snap was around 183 MB and Flatpak was around 109 MB.

Conclusion

Universal app packages are a win-win situation for both developers and end users. These packaging formats allow much faster delivery of secure apps. They also open doors for developers who have been shying away from Linux because of different packaging standards used in different distributions. There are some issues that need to be ironed out in these three packaging formats. However, they all are under active development and these issues will be fixed overtime. Universal cross-distribution packages are the future and their adoption will increase. Slowly but steadily, distributions may move to Snap, Flatpak or AppImage builds in future except for core libraries and essential packages that are needed for the OS to work.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

[Zabbix] Giám sát Cisco Switch – SNMP

Khi nhắc tới các thiết bị network hẳn ai cũng biết tới Cisco. Thiết bị network trong hệ thống...
30/12/2020

Install Docker CE on CentOS 8

Docker CE is officially not supported on Red Hat Enterprise Linux (RHEL) 8 or CentOS 8. The Red Hat’s officially recommended...
29/12/2020

Debian Changing Hostname

The Hostname The hostname is the label assigned to a device on a network – a desktop computer, database server, tablet...
29/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Hướng Dẫn Chọn Dịch Vụ Thuê Địa Chỉ IPv4
10/03/2025

Reliable IPv4 and IPv6 Subnet Rental Services: The Perfect Solution for Global Businesses
23/12/2024

Tìm Hiểu Về Thuê Proxy US – Lợi Ích và Cách Sử Dụng Hiệu Quả
11/12/2024

Mua Proxy V6 Nuôi Facebook Spam Hiệu Quả Tại Onetcomvn
03/06/2024

Hướng dẫn cách sử dụng ProxyDroid để duyệt web ẩn danh
03/06/2024