Single file application¶
There are different projects to install an application as a single file:
|Snaps (Snapcraft)||Snapcraft Store|
The first use case is to easy install graphical applications (“desktop GUI apps”), but Snaps is also designed to package services (server daemons).
Comparison written by AppImage (not objective): AppImage: Similar Projects.
- “Shared Runtime”: don’t duplicate files on disk, share memory between processes, whenever possible
- Easy and atomic upgrade
- App Store (centralized or distributed repositories)
- Sandboxing for security
- Number of packaged applications
- Don’t depend on the Linux distribution: installable on Debian, OpenSUSE, Fedora, etc.
- Flatpak: Red Hat, Endless, Gnome
- Snapcraft: Canonical (Ubuntu)
- AppImage: OpenSUSE
Example of applications that you can find packaged:
- Popular open source applications:
- Popular commercial applications:
“Applications as a single file” reuse many features which have been pushed by containers to the Linux kernel and userspace to isolate “services” (daemon servers):
- Namespaces for everything: user identifiers, process identifiers, filesystem root, network, etc.
- Linux SECCOMP
- bubblewrap: “Unprivileged sandboxing tool”: used by docker, systemd-nspawn and flatpak for example.
Flatpak is made of 3 things:
- software deployment
- package management
- application virtualization
- Flatpak – a history by Alexander Larsson (June, 2018)
- Using Flatpak with Python by Logan Jones (May 2018)
- Portals: ???
- winepak: Flatpak-ing Microsoft Windows
applications with Wine.
- League of Legends
- Old names of Flatpak: “Glick” (followed by “Glick2”), then “xdg-app”.
- Old name of “BubbleWrap” (sandbox used internally by Flatpak): “xdg-app-helper”.
- Contributors must sign a CLA.
- Old AppImage name: “klik”.
- Docker: different usage
- Virtual Machine (VirtualBox, virt-manager, qemu, etc.): different usage
- macOS uses .dmg files: one file per application.
- Nix/Guix: closer to regular package manages (multiple files), but can be used without being root.
- Image signature?
- Revisiting How We Put Together Linux Systems by Lennart Poettering (Sept 2014)
systemctl status flatpak-system-helper.service
User session service:
systemctl --user status flatpak-session-helper.service
Debug system helper:
sudo /usr/libexec/flatpak-system-helper -vv -r --no-idle-exit