AppImage

Last updated
AppImage
App-image-logo.svg
Filename extension
.AppImage
Magic number 41 49 02 (3 bytes hexadecimal from offset 8)
Developed bySimon Peter
Initial release2004;20 years ago (2004)
Latest release
V13.
December 31, 2020;3 years ago (2020-12-31)
Container for Software installation
Open format?Yes
Free format?Yes
Website appimage.org

AppImage (formerly known as klik and PortableLinuxApps) is an open-source format for distributing portable software on Linux. It aims to allow the installation of binary software independently of specific Linux distributions, a concept often referred to as upstream packaging. As a result, one AppImage can be installed and run across Ubuntu, Arch Linux, and Red Hat Enterprise Linux without needing to use different files. It aims to be a format that is self-contained, rootless, and independent of the underlying Linux distribution. [1]

Contents

Released first in 2004 under the name klik, it was continuously developed, then renamed in 2011 to PortableLinuxApps and later in 2013 to AppImage. Version 2 was released in 2016.

History

AppImage's predecessor, klik, was designed in 2004 by Simon Peter. [2] The client-side software is licensed under the GNU GPL. klik integrated with web browsers on the user's computer. Users downloaded and installed software by typing a URL beginning with klik://. This downloaded a klik "recipe" file, which was used to generate a .cmg file. For the main ingredients, pre-built .deb packages from Debian Stable repositories were usually fed into the recipe's generation process. This way, one recipe could be used to supply packages to a wide variety of platforms. With klik, only eight programs could be run at once because of the limitation of mounting compressed images with the Linux kernel, unless FUSE was used. The file was remounted each time the program was run, meaning the user could remove the program entirely by simply deleting the file. The next version, klik2, was in development and would natively incorporate the FUSE kernel module, but it never reached past the beta stage. [3] Around 2011, the klik project went dormant, and the website went offline. [4]

Simon Peter started a successor project named PortableLinuxApps with similar goals around that time. [5] The technology was adopted, for instance, by the "portablelinuxgames.org" repository, which provided hundreds of mostly open-source video games. [6]

Around 2013, the software was renamed again from portableLinuxApps to AppImage; the license became the MIT license. AppImage is the format, and AppImageKit is a concrete open-source implementation. The development happens in a GitHub repository. [7]

In 2016, Version 2 of the AppImage specification was drafted. Version 2 is unrestricted in filesystem type (a draft implementation used SquashFS). [8] [9] It removes the fixed offset for where the filesystem image begins in the file and enabled digital signatures to be embedded directly in the AppImage as opposed to as a separate file.

Design

klik installing an application Klik.png
klik installing an application

AppImage aims to be an application deployment system for Linux with the following objectives: simplicity, binary compatibility, portability, distro agnosticism, no installation, no root permission, and keeping the underlying operating system untouched. [10] Because of this, AppImage does not install software by placing executables in various locations. Instead, the file is a single filesystem image itself. When run, the file is mounted with FUSE. AppImage is designed to be simpler to use than traditional installer formats such as Deb and RPM, since it is not necessary to modify the operating system or user environment.

Each file is self-contained; it includes all libraries the application depends on that are not already part of the targeted system. A version 1.0 AppImage is an ISO 9660 Rock Ridge file (which can be optionally compressed via zisofs) containing a minimal AppDir and a runtime. [11]

AppImage allows the embedding of digital signatures, which need to be verified externally. The format does not require signatures to be validated, only that they may be included. [12] AppImage does not enforce sandboxing, but it may be done by some applications. [13]

Reception and usage

In 2007, Klik was the inspiration for Alexander Larsson's glick project, the precursor of Flatpak. [14]

In 2015, Linus Torvalds, creator of the Linux kernel, said that "[t]his is just very cool. I finally got around to play with the "AppImage" version of Subsurface, and it really does seem to "just work"." [15] Mark Shuttleworth stated that "AppImages are a pretty clean experience and I admire the work behind them." [16]

See also

Related Research Articles

<span class="mw-page-title-main">Linux distribution</span> Operating system based on the Linux kernel

A Linux distribution is an operating system made from a software collection that includes the Linux kernel and often a package management system. They are often obtained from the website of each distribution, which are available for a wide variety of systems ranging from embedded devices and personal computers to servers and powerful supercomputers.

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

<span class="mw-page-title-main">GoboLinux</span> Linux distribution

GoboLinux is a Linux distribution whose most prominent feature is a reorganization of the traditional Linux file system. Rather than following the Filesystem Hierarchy Standard like most Unix-like systems, each program in a GoboLinux system has its own subdirectory tree, where all of its files may be found. Thus, a program "Foo" has all of its specific files and libraries in /Programs/Foo, under the corresponding version of this program at hand. For example, the commonly known GCC compiler suite version 8.1.0, would reside under the directory /Programs/GCC/8.1.0.

Unionfs is a filesystem service for Linux, FreeBSD and NetBSD which implements a union mount for other file systems. It allows files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file system. Contents of directories which have the same path within the merged branches will be seen together in a single merged directory, within the new, virtual filesystem.

<span class="mw-page-title-main">Cooperative Linux</span> Software to run both Windows and Linux

Cooperative Linux, abbreviated as coLinux, is software which allows Microsoft Windows and the Linux kernel to run simultaneously in parallel on the same machine.

<span class="mw-page-title-main">Arch Linux</span> Rolling release distribution of Linux

Arch Linux is an independently developed x86-64 general-purpose Linux distribution that strives to provide the latest stable versions of most software by following a rolling-release model. The default installation is intentionally minimal so that users can add only the packages they require.

<span class="mw-page-title-main">Ingo Molnár</span> Linux kernel programmer

Ingo Molnár, employed by Red Hat as of May 2013, is a Hungarian Linux hacker. He is known for his contributions to the operating system in terms of security and performance.

Filesystem in Userspace (FUSE) is a software interface for Unix and Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a bridge to the actual kernel interfaces.

udev is a device manager for the Linux kernel. As the successor of devfsd and hotplug, udev primarily manages device nodes in the /dev directory. At the same time, udev also handles all user space events raised when hardware devices are added into the system or removed from it, including firmware loading as required by certain devices.

In Linux systems, initrd is a scheme for loading a temporary root file system into memory, to be used as part of the Linux startup process. initrd and initramfs refer to two different methods of achieving this. Both are commonly used to make preparations before the real root file system can be mounted.

<span class="mw-page-title-main">Portable application</span> Type of computer program

A portable application, sometimes also called standalone software, is a computer program designed to operate without changing other files or requiring other software to be installed. In this way, it can be easily added to, run, and removed from any compatible computer without setup or side-effects.

<span class="mw-page-title-main">AppArmor</span> Linux kernel security module

AppArmor is a Linux kernel security module that allows the system administrator to restrict programs' capabilities with per-program profiles. Profiles can allow capabilities like network access, raw socket access, and the permission to read, write, or execute files on matching paths. AppArmor supplements the traditional Unix discretionary access control (DAC) model by providing mandatory access control (MAC). It has been partially included in the mainline Linux kernel since version 2.6.36 and its development has been supported by Canonical since 2009.

Squashfs is a compressed read-only file system for Linux. Squashfs compresses files, inodes and directories, and supports block sizes from 4 KiB up to 1 MiB for greater compression. Several compression algorithms are supported. Squashfs is also the name of free software, licensed under the GPL, for accessing Squashfs filesystems.

The following is a timeline of virtualization development. In computing, virtualization is the use of a computer to simulate another computer. Through virtualization, a host simulates a guest by exposing virtual hardware devices, which may be done through software or by allowing access to a physical device connected to the machine.

<span class="mw-page-title-main">Criticism of desktop Linux</span> Criticism of certain Linux distributions

Criticism of desktop Linux is a history of comment on the perceived shortcomings of the Linux operating system when installed on desktop computers. These criticisms have been aimed at the plethora of issues and lack of consistency between Linux distributions, their usefulness and ease of use as desktop systems for general end users, driver support and issues with multi-media playback and audio development.

<span class="mw-page-title-main">OpenZFS</span> Open-source implementation of the ZFS file system

OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems for the Solaris operating system and now maintained by the OpenZFS Project. It supports features like data compression, data deduplication, copy-on-write clones, snapshots, and RAID-Z. It also supports the creation of virtual devices, which allows for the creation of file systems that span multiple disks.

<span class="mw-page-title-main">Snap (software)</span> Software deployment system for Linux by Canonical

Snap is a software packaging and deployment system developed by Canonical for operating systems that use the Linux kernel and the systemd init system. The packages, called snaps, and the tool for using them, snapd, work across a range of Linux distributions and allow upstream software developers to distribute their applications directly to users. Snaps are self-contained applications running in a sandbox with mediated access to the host system. Snap was originally released for cloud applications but was later ported to also work for Internet of Things devices and desktop applications.

<span class="mw-page-title-main">Flatpak</span> Linux software deployment utility

Flatpak is a utility for software deployment and package management for Linux. It is advertised as offering a sandbox environment in which users can run application software in isolation from the rest of the system. Flatpak was known as xdg-app until 2016.

<span class="mw-page-title-main">Foliate (software)</span> E-book reading application for Linux

Foliate is a free e-book reading application for desktop Linux systems. The name refers to leaves, meaning "(getting) leafy" or "…-leaved".

References

  1. Mobily, Tony (2006-04-07). "Free Software Magazine interview with Simon Peter". Free Software Magazine. Archived from the original on 2007-03-30. Retrieved 2007-05-05.
  2. "Slashdot - Point-and-klik Linux Software Installation?". slashdot.com. 15 January 2005.
  3. Screen capture video of Klik2 on video.google.com (archived)
  4. "klik - Linux Software Download". Archived from the original on 2007-06-26.
  5. Peter, Simon (2010). "AppImageKit Documentation 1.0" (PDF). PortableLinuxApps.org. pp. 2–3. Archived from the original (PDF) on 2010-11-29. Retrieved 2011-07-29.
  6. "Portable Games for Linux".
  7. "AppImageKit". github.com. 19 November 2021.
  8. "AppImage/AppImageSpec". GitHub. 18 November 2021.
  9. "The future of AppImage: Type 2 and new tools". AppImage. September 15, 2016.
  10. AppImage: Linux apps that run anywhere on youtube.com by Simon Peter (June 2016)
  11. Peter, Simon. "AppImageKit Documentation" (PDF). Archived from the original (PDF) on 2010-11-29. Retrieved 2011-08-03.
  12. "Signing AppImages — AppImage documentation". docs.appimage.org. Archived from the original on 2019-10-29. Retrieved 2019-10-29.
  13. Peter, Simon (2020-09-20). "AppImage Mythbusting" (PDF). GitHub . p. 17. Retrieved 2024-01-18.
  14. "Experiments with runtime-less app-bundles – Alexander Larsson". 2007-08-07. Retrieved 2024-01-18.
  15. Torvalds, Linus (2016-02-05). "This is just very cool. I finally got around to play with the "AppImage"…". Google Plus . Archived from the original on 2016-02-05. Retrieved 2024-01-18.
  16. Shuttleworth, Mark (2017-04-09). "I would like to thank all of you for your spirit and intellect and energy in ..." Google Plus . Archived from the original on 2017-04-09. Retrieved 2024-01-18.