I just read Meet Etcher, A Stylish Open-Source USB Image Writer Tool. It talks about downloading an AppImage.
Yes, Linux; the Linux packages are distributed as a .appimage for 32-bit and 64-bit distributions, and should run across all major Linux distributions without any issues. The team currently has no plan to provide a native .deb (or .rpm) installer.
What are AppImages? How do they differ from snaps?
Basic Information
Regarding installation
I am quoting the appImage project page here:
Making it executable
You can make the appImage executable as follows:
Executing it
You can execute an appImage as follows:
Additional Information
About appImage
You can find some general informations about appImage here.
I am quoting the appImage project page here:
Wikipedia adds
The
README.md
of the AppImageKit-project offers a lot additional informations like Use cases, the problem space and objectives.Use Cases
As a user, I want to go to an upstream download page, download an application from the original author, and run it on my Linux desktop system just like I would do with a Windows or Mac application.
As a tester, I want to be able to get the latest bleeding-edge version of an application from a continuous build server and test it on my system, without needing to compile and without having to worry that I might mess up my system.
As an application author or ISV, I want to provide packages for Linux desktop systems just as I do for Windows and OS X, without the need to get it 'into' a distribution and without having to build for gazillions of different distributions.
Objectives
Be Simple.
Maintain binary compatibility.
Be distribution-agnostic.
Remove the need for installation.
Keep apps compressed all the time.
Allow to put apps anywhere.
Make applications read-only.
Do not require recompilation.
Keep base operating system untouched.
Do not require root.
Before you can run an AppImage, you need to make it executable. This is a Linux security feature. There are two main ways to make an AppImage executable:
Using the GUI
or
Using command line
Now double-click your file to run it OR Right-click > Run
The basic idea might look similar between the two systems, but there are some design differences between snaps and Appimages.
Some "big" ones that come to my mind are:
Security, in terms of confinement: Snap packages run in a sandbox, and they are not allowed to escape from it and reach other parts of the system that they should not touch. This is a stronger security layer that runs parallel to the permission's system. Obviously, it is a bit frustrating when dealing with it at the beginning (and also later on), but if you think about it in terms of system administration, this is the thing that an administrator wants for their users.
Security: Installing software taken from around the net, is as safe as going around licking poles in the streets. Sometimes nothing happens, sometimes you get some very big health issues. Snap packages have their proper repositories, that are controlled by Canonical, like the usual standard Ubuntu repositories. You can go on and install
.deb
files from around, but that will be your choice and not a design issue.Installation: AppImages are meant to be the equivalent of the "portable Windows executables". All the libraries are self-contained and any user can just download and execute one of those. On the other hand,
snap
packages are proper packages, and they need to be installed (asroot
, or withsudo
) via the apposite package manager (snap install tic-tac-toe
throws an error: it needssudo
!)Removal: To remove a snap package, you need to use the package manager
snap remove ...
with the right permissions to do so. AppImages, on the other hand, are just "there". So any user does not want that AppImage? He/she just removes the file and it is gone.While I strongly suggest being cautious when using AppImages, I personally use some of them myself.
I find them particularly useful on my work system, where I do not have
root
access (only the admin has that) but I need the latest version of particular software that, fortunately, the developer has provided in Appimage form.I am a bit afraid that some malign code is indeed contained in them, so I checked as much as possible the identity of the publisher. I am not 100% sure that this software is benign, but I have done all I could.
While snap focuses on Ubuntu only, AppImage is cross-distribution and also runs on Fedora, Debian, OpenSUSE, CentOS, etc.
AppImage needs no runtime or infrastructure support from the Linux distribution and therefore runs next to everywhere. It enables application authors to ship their software directly to Linux users like they do for Windows and OS X; without Canonical or anyone else "in-between" the software author and the end-user.
If an application is provided in AppImage format, then a user can go to the original author's website to download it, e.g., MuseScore from https://musescore.org/en/download. Make the AppImage executable (either using your file manager or
chmod a+x ./yourAppImage
), then you can run the application simply by double-clicking.AppImages require FUSE to run. Filesystem in Userspace (FUSE) is a system that lets non-root users mount filesystems.
Install FUSE
Many distributions have a working FUSE setup out-of-the-box. However if it is not working for you, you may need to install and configure FUSE manually.
For example, on Ubuntu:
For example, on openSUSE:
Fallback
If you don't want to install FUSE, you can either mount or extract the AppImage.
To mount the AppImage and run the application, simply run
If that does not work, you might have an experimental type 2 AppImage. These require you to pass
-o offset=...
to themount
command. Run the AppImage with--appimage-offset
to find out the correct number for the offset.Now AppImageLauncher makes it really easy and convenient to launch/create a desktop file. Try it out
Once installed you'll want to hook it up to your desktop menu.
To quickly integrate into your desktop menu, one dirty trick is to load the older Debian repository (assuming an older version is in the repo), for example,
Then once that's done, right-click on your menu starter, and select
configure...
.(This is what it looks like in Cinnamon. Your desktop may look different.)
Then open the
menu editor
.Find the app and edit its properties and update the 'Command:' Change it to the pathname of your new AppImage file.
(!! This leaves the older version on your disk, wasting space, and there are ways to make this cleaner, but this is really quick to get your new AppImage working from your menu.)
...Now to clean this up:
You want to remove the old package, but still keep its desktop and icon files.
Find any digikam desktop files. One way to find them is with
locate
:$ locate digikam.desktop
/usr/share/applications/org.kde.digikam.desktop
~/.local/share/applications/org.kde.digikam.desktop
The first is your system defaults (for all users), and the 2nd is just for you. The second one (the local one) normally overrules the first if they both exist.
And if you diff them you'll notice that you have only edited the .local one with the menu editor, not the one in /usr...
Furthermore, you don't need both. So if you want you can delete the
.local
one and rely on just the/usr
one. It keeps things simpler.The simplist way to fix this is with a move which overwrites as follows:
Next you have to rename this file to avoid the package purger from removing it when you run that in a moment. Note, once you save your edits or changes to a desktop file, the menu will automatically find your changes and update itself.
$ sudo mv org.kde.digikam.desktop org.kde.digikam.appimage.desktop
Now look in it to find the icon name it's currently using (pointing to):
$ sudo grep Icon org.kde.digikam.appimage.desktop # Note caps 'I'
Icon=digikam
Now find the related icon files
$ locate digikam | grep icons
/usr/share/icons/hicolor/128x128/apps/digikam.png
/usr/share/icons/hicolor/16x16/apps/digikam.png
/usr/share/icons/hicolor/22x22/apps/digikam.png
/usr/share/icons/hicolor/256x256/apps/digikam.png
/usr/share/icons/hicolor/32x32/apps/digikam.png
/usr/share/icons/hicolor/48x48/apps/digikam.png
/usr/share/icons/hicolor/64x64/apps/digikam.png
/usr/share/icons/hicolor/scalable/apps/digikam.svgz
/usr/share/icons/oxygen/base/128x128/apps/digikam.png
/usr/share/icons/oxygen/base/16x16/apps/digikam.png
/usr/share/icons/oxygen/base/22x22/apps/digikam.png
/usr/share/icons/oxygen/base/256x256/apps/digikam.png
/usr/share/icons/oxygen/base/32x32/apps/digikam.png
/usr/share/icons/oxygen/base/48x48/apps/digikam.png
/usr/share/icons/oxygen/base/64x64/apps/digikam.png
/var/lib/app-info/icons/debian-buster-main/48x48/digikam_digikam.png
/var/lib/app-info/icons/debian-buster-main/64x64/digikam_digikam.png
The ones you care about are in the
/usr/share/icons/
tree.Renaming these is hard. It's simpler to just rename the entire tree (to save it away), uninstall, and put the tree back when you're done.