AppImage (packaging method)
|This article's lead section may not adequately summarize key points of its contents. (October 2009)|
|Type||Software download system / package format|
AppImage is a format for distributing portable software on Linux without needing superuser permissions to install the application. It tries also to allow Linux distribution-agnostic binary software deployment for application developers. Released first in 2004 under the name klik, it was continuously developed since then, renamed in 2011 to PortableLinuxApps and 2013 to AppImage.
AppImage strives to be an application deployment system for Linux with the following objectives: simplicity, binary compatibility, distro agnosticism, no installation, no root permission, being portable, and keeping the underlying operating system untouched.
AppImage, like the predecessors klik and portablelinuxapps, do not install software in the traditional sense; i.e., it does not put files all over the place in the file system. It uses one file per application. Each one is self-contained: it includes all libraries the application depends on and that are not part of the base system. In this regard, it is similar to "application virtualization". One can use an AppImage file even if they are not a superuser, or they are using a live CD. AppImage files are often simpler than compiling and installing an application, as no installation actually took place. The AppImage file is a compressed image which is temporarily mounted to allow access to the program, but not having to extract the program or modify the underlying system.
AppImage's predecessor klik was designed in 2004 by Simon Peter. The client-side software is GPL licensed. 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 the .cmg file. In 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 is run, meaning the user could remove the program by simply deleting the .cmg file. A next version, klik2, was in development; and would natively incorporate the FUSE kernel module, but it never reached past the beta stage. Around 2011, the klik project went dormant and the homepage went offline for some time.
Simon Peter started a successor project named PortableLinuxApps with similar goals around that time. The technology was adapted for instance by the "portablelinuxgames.org" repository, which provides hundreds of mostly open-source video games.
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 with latest changes from 2016.
Reception and usage
Linus Torvalds' dive log application Subsurface started to use AppImage around 2015. Subsurface's traditional packaging was changed to a portable, self-contained, distro-agnostic AppImage, as binary software deployment for the Linux users of the various Linux distributions turned out to be problematic.
- Portable application creators
- Snappy (package manager)
- Zero Install, another similar project
- ROX uses directories (AppDirs) as application bundles.
- Mobily, Tony (2006-04-07). "Free Software Magazine interview with Simon Peter". Free Software Magazine.
- Peter, Simon (2010). "AppImageKit Documentation 1.0" (pdf). PortableLinuxApps.org. pp. 2–3. Retrieved 2011-07-29.
The AppImage format has been created with specific objectives in mind: Be Simple [...], Maintain binary compatibility [...], Be distribution-agnostic [...], Remove the need for installation [...], Allow to put apps anywhere [...], Do not require recompilation [...], Keep base operating system untouched [...], Do not require root [...]
- AppImage: Linux apps that run anywhere on youtube.com by Peter Simon (June 2016)
- "Slashdot - Point-and-klik Linux Software Installation?". slashdot.com.
- Screen capture video of Klik2 on video.google.com (archived)
- "klik - Linux Software Download".
- "Portable Games for Linux".
- "AppImageKit". github.com.
- Experiments with run-timeless app bundles by Alex Larsson (2007)
- Linus Torvalds (2014-08-29). "Q&A with Linus Torvalds" (video). DebConf 2014 Portland. debian.net. 6:28. Retrieved 2016-05-14.
I have seen this first hand with the other project I'm involved with, which is my dive log app. We make binaries for Windows and OSX, we basically don't make binaries for Linux. Why? Because making binaries for Linux desktop applications is a major fucking pain in the ass.
- Torvalds, Linus. "This is just very cool.". Google+.
I finally got around to play with the "AppImage" version of +Subsurface, and it really does seem to "just work".
- Hohndel, Dirk (2015-11-25). "This is just very cool.". Google+.
I, as the app maintainer, don't want my app bundled in a distribution anymore. Way to much pain for absolutely zero gain. Whenever I get a bug report my first question is "oh, which version of which distribution? which version of which library? What set of insane patches were applied to those libraries?". No, Windows and Mac get this right. I control the libraries my app runs against. [...] With an AppImage I can give them just that. Something that runs on their computer.
- Weiss, Isaac. "MuseScore 2.0.3 is released". MuseScore.org. MuseScore. Retrieved 2016-04-05.
- "Krita 3.0 Released". Krita.org. Krita. 2016-05-31.