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
13
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's 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. Linux users usually obtain their operating system by downloading one of the Linux distributions, which are available for a wide variety of systems ranging from embedded devices and personal computers to 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 a minimal base system, configured by the user to only add what is purposely required.

<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.

<span class="mw-page-title-main">Git</span> Software for version control of files

Git is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

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, is a 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.

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">Linux kernel</span> Operating system kernel

The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally written in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU operating system, which was written to be a free (libre) replacement for Unix.

<span class="mw-page-title-main">Proxmox Virtual Environment</span> Linux distribution for server virtualization

Proxmox Virtual Environment is a hyper-converged infrastructure open-source software. It is a hosted hypervisor that can run operating systems including Linux and Windows on x64 hardware. It is a Debian-based Linux distribution with a modified Ubuntu LTS kernel and allows deployment and management of virtual machines and containers. Two types of virtualization are supported: container-based with LXC, and full virtualization with KVM. It includes a web-based management interface. There is also a mobile application available for controlling PVE environments.

<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, formerly known as xdg-app, 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.

<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.