Deciding how to install software on Linux can feel like choosing what to eat at your mall's food court: There are lots of options — so many, in fact, that it may be a struggle to decide which one is best for you.
I won't tell you what you should get at the food court. But I will tell you what you need to know to decide how to run software on Linux by comparing two popular, distribution-agnostic package managers: AppImage and snap. Each tool works in a similar way in most respects, but there are important nuances between them that may make AppImage better than snap in some cases, or vice versa.
- What Is AppImage?
- What Is Snap?
- Similarities Between AppImage and Snap
- Main Differences Between AppImage and Snap
- AppImage vs. Snap: What to Use When
What Is AppImage?
AppImage is a software packaging format that makes it possible to build and deploy software in a uniform way across any modern Linux distribution, including Ubuntu.
When you install software using AppImage, you download a file (the "app image" file) for the application you want to run. Then, you simply execute the file to start the application. You can optionally install it to your file system, too, although AppImage doesn't require image files to be stored in any particular location.
What Is Snap?
Snap is also an application packaging format and deployment tool that supports running software across all Linux distributions. (Technically, snap is the name of the packages and snapcraft is the name of the management tool, but it's common to refer to both entities as "snap.")
To use snap, you download a snap package and install it with a command like:
snap install package_name
Similarities Between AppImage and Snap
In many respects, AppImage and snap share important features. They both:
- Provide a consistent way to package and run applications across virtually any Linux distribution.
- Allow applications to run in "sandboxed" environments. That means that applications remain isolated from the host system when they run.
- Provide central repositories that host popular application packages. (AppImage's main repository is AppImageHub, while snap offers the Snap Store.)
- Can run applications directly from stand-alone image files (as opposed to having to unpack an installation file in the way that software managers such as apt do).
In terms of what AppImage and snap allow you to do, then, there is not a lot of difference.
Main Differences Between AppImage and Snap
But in terms of how AppImage and snap do what they do, there are some important distinctions.
One major difference is that with AppImage, there is no formal installation process at all. To run an AppImage, you simply download the image, make it executable, and execute it.
Snap is different because it does require you to install packages to your system.
The snap installation process requires root (or sudo) access. Because AppImage doesn't have a formal installation process, no root access is required to use AppImage.
On its own, AppImage doesn't keep track of which AppImage files you have available on your system. Nor does it automatically update them. You have to launch and update applications manually (unless you install additional tools, like AppImageUpdate, that automate some of these tasks for you).
Snap is different because it does integrate installed snap packages into your system so that they are easily findable and launchable. It also automatically updates packages in most cases.
Although AppImage and snap are both designed to be distribution-agnostic solutions for running Linux software, snap is closely associated with Ubuntu, as noted above. In contrast, AppImage is a more genuinely agnostic solution.
AppImageHub, the main repository for AppImage images, is considerably smaller, with just under 1,200 images at the time of writing. AppImageHub covers the most popular Linux applications, but you may be out of luck if you're looking for an AppImage for a more obscure app.
AppImage vs. Snap: What to Use When
So, which software installation solution is best? The answer depends, of course, on your unique requirements.
In general, snap is a better choice if:
- You're using Ubuntu.
- You want your packages to be integrated with your system software launcher.
- You want automatic updates.
- You need access to the largest possible repository of software.
- You have root or sudo privileges on the machine you're using.
But AppImage is typically a better solution if:
- You don't have root access.
- You want to maintain strict isolation between your apps and the rest of the system.
- Having automatic updates is not a priority (or you are willing to set up additional tools to handle automatic updates).
- You want software that can run easily on any Linux system, even those where tools like snap are not preinstalled.
- The software you want to run is mainstream and you can easily find an AppImage for it.
About the authorChristopher Tozzi is a technology analyst with subject matter expertise in cloud computing, application development, open source software, virtualization, containers and more. He also lectures at a major university in the Albany, New York, area. His book, “For Fun and Profit: A History of the Free and Open Source Software Revolution,” was published by MIT Press.