Snaps in Linux: A Basic Introduction

Let’s discuss the popular topic – Snaps in Linux. There are numerous Linux distributions, each distribution having its own official package manager and package format such as deb, rpm, etc. This has obvious drawbacks with developers having to package the same software multiple times for different distributions.

However, there have been multiple projects which attempted to branch out from traditional package management and develop package formats that are universal to all Linux distributions. This includes Flatpak, Appimage, and Snaps. In this article, we will be giving a basic introduction and guide to Snaps.

What are Snaps?

Snaps are a package format developed by Canonical (owner of Ubuntu). The major difference between snaps and traditional (deb, rpm) package management is the way dependencies are handled.

While traditional package managers search, download, and install dependencies when you install the package, Snaps are pre-packaged with all the dependencies.

This way snaps don’t have to download new packages at the time of installation and developers can always be assured that there are no changes to their application with changes in the system. The sandboxed and self-standing design of snaps also makes them more secure than traditional packages.

However, perhaps the biggest advantage to the sandbox design is that it enables the same build of snap packages to work on multiple distributions. Currently, distributions support snaps including Ubuntu, Debian, Arch, Fedora, CentOS, ElementaryOS, KDE Neon, Kubuntu, OpenSUSE, RedHat, Pop!_OS, Manjaro.

How to Install the Snap Package manager?

We need to install an application to install and manage all snaps. This application is called snapd (Snap daemon) The latest versions of Ubuntu, Zorin, KDE Neon, Manjaro, and Solus come pre-installed with snapd.

Installing Snap on Debian

Run the following commands one after the other to get Snap Package manager on your Debian Linux setup.

sudo apt update 
sudo apt install snapd 
sudo apt install core 

Installing Snap on Arch Linux

Run the following commands one after the other to get Snap Package manager on your Arch Linux setup.

git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si
sudo systemctl enable --now snapd.socket

Installing Snap on Fedora

Run the following commands one after the other to get Snap Package manager on your Fedora Linux setup.

sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap

Installing Snap on Linux Mint

Run the following commands one after the other to get Snap Package manager on your Linux Mint setup.

sudo mv /etc/apt/preferences.d/nosnap.pref ~/Documents/nosnap.backup
sudo apt update
sudo apt install snapd

Installing Snap on OpenSuse

Run the following commands one after the other to get Snap Package manager on your OpenSuse setup.

sudo zypper addrepo --refresh \
    https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.3 \
    snappy

#Swap out Leap_15.3 for either Leap_15.2 or Tumbleweed depending on your version of openSUSE

sudo zypper --gpg-auto-import-keys refresh
sudo zypper dup --from snappy
sudo zypper install snapd
sudo systemctl enable --now snapd 
sudo systemctl enable --now snapd.apparmor #Only for Leap_15.3 and Tumbleweed

Tip: If you followed these steps and it doesn’t work, try logging out and logging in once to ensure the path is added to the source.

For installation instructions for more distributions and more detailed documentation, visit Snapcraft.

Managing Snap Packages on Linux

After we have installed and set up the package manager, we are ready to install Snaps.

1. Install Snaps

You can run the following command to install snap packages on your Linux Systems.

sudo snap install <snap-name>
Snap Install Package

2. Delete Snaps

Here’s how to remove a snap package that you’ve already installed on your system.

sudo snap remove <snap-name>
How To Remove Snaps

3. Update Snaps

Applications are auto-updating on Snap. That means that as soon as there’s a new update, the snap packages are auto updated. You can refresh the repository to check for any new updates that weren’t applied to your packages by using the snap refresh command.

sudo snap refresh <snap-name>
How To Update Snap

4. Find Snaps

If you want to lookup a package, use the snap find command. Using this command without any arguments will show the list of featured snaps, a curated list showcasing the new, interesting, or unique software available in the Snap Store

snap find <package-name>

Alternatively, you can also browse Snapcraft to browse packages. For more detailed documentation refer to the Quickstart guide.

What are channels in Snap?

Channels are used in Snap to differentiate between multiple releases of the same package. For example, a snap can have a stable release, an unstable release, and an experimental release and it is important to know which release we are following when it’s time to update.

A channel is defined by three aspects, Track, Risk, and Branch written as follows.

<track>/<risk>/<branch>(optional)
  • Track : Defines which release we are using
  • Risk : Defines if it is stable/ beta/ candidate or edge
  • Branch : Optional. Usually for bug fixes.

Every package has a default channel specified by the developer which is used when no channel is specified at the time of installation.

To check the channels of your installed snaps, execute snap list .

List All Snaps

To specify the channel during installation, use

snap install <package-name> --channel=<channel>
Snap Change Channel

Conclusion

This was an introduction to Snaps, a third-party package manager which aims to simplify dependency management and universalize package management in all Linux distributions. While this has been a relatively successful project, it hasn’t in any way affected the popularity of traditional package managers. To learn more about Snaps, visit Snapcraft documentation.