Single file application
There are different projects to install an application as a single file:
Project | Application Store |
---|---|
Flatpak | Flathub |
Snaps (Snapcraft) | Snapcraft Store |
AppImage | AppImageHub |
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.
Features:
- "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.
Supporters:
- Flatpak: Red Hat, Endless, Gnome
- Snapcraft: Canonical (Ubuntu)
- AppImage: OpenSUSE
Applications
Example of applications that you can find packaged:
- Popular open source applications:
- Audacity
- GIMP
- LibreOffice
- VLC
- Popular commercial applications:
- Spotify
- Skype
- Steam
- Slack
Linux technologies
"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):
- CGroups
- Namespaces for everything: user identifiers, process identifiers, filesystem root, network, etc.
- Sandboxing
- Linux SECCOMP
- bubblewrap: "Unprivileged sandboxing tool": used by docker, systemd-nspawn and flatpak for example.
Flatpak
Flatpak is made of 3 things:
- software deployment
- package management
- application virtualization
Links:
- 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.
- BattleNet
- Overwatch
- StarCraft2
- WoW
- Fortnite
- League of Legends
- etc.
- Old names of Flatpak: "Glick" (followed by "Glick2"), then "xdg-app".
- Old name of "BubbleWrap" (sandbox used internally by Flatpak): "xdg-app-helper".
See also:
Snap
- Contributors must sign a CLA.
AppImage
- Old AppImage name: "klik".
Misc
- Click?
- Docker: different usage
- Virtual Machine (VirtualBox, virt-manager, qemu, etc.): different usage
- systemd:
- systemd-nspawn
- machinectl
- casync? (blog article)
- portable services (blog article)
- dynamic users with systemd (blog article)
- macOS uses .dmg files: one file per application.
- Nix/Guix: closer to regular package manages (multiple files), but can be used without being root.
- 0install
- Image signature?
- Revisiting How We Put Together Linux Systems by Lennart Poettering (Sept 2014)
- https://en.wikipedia.org/wiki/Application_virtualization