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 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. 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">Gentoo Linux</span> Linux distribution

Gentoo Linux is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user's preferences and is often optimized for the specific type of computer. Precompiled binaries are available for some packages. Gentoo runs on a wide variety of processor architectures. For the full list see table on the right.

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

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

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.

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

systemd Suite of system components for Linux

systemd is a software suite that provides an array of system components for Linux operating systems. The main aim is to unify service configuration and behavior across Linux distributions. Its primary component is a "system and service manager" – an init system used to bootstrap user space and manage user processes. It also provides replacements for various daemons and utilities, including device management, login management, network connection management, and event logging. The name systemd adheres to the Unix convention of naming daemons by appending the letter d. It also plays on the term "System D", which refers to a person's ability to adapt quickly and improvise to solve problems.

<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, in 2016, was known as xdg-app.

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.