Snap is a universal application packaging and deployment system for Linux, developed by Canonical. A Snap package, or snap, packages an application together with the runtime components it needs, allowing the same application package to be distributed across many Linux distributions.
This can be particularly useful when an application is unavailable in your distribution’s repositories, when you want a newer version than the distribution provides, or when the application’s dependencies are difficult to install manually.
Unlike a traditional RPM or DEB package, a snap is designed to be largely independent of the host distribution. Most snaps run with strict confinement, which limits their access to the rest of the system and is an important part of Snap’s security model. (snapcraft.io)
For example, GIMP is available as a Snap and can be installed on Fedora even though Fedora uses RPM packages:
sudo snap install gimp
The official GIMP Snap is published by the verified GIMP team on the Snap Store. (snapcraft.io)
Another useful example is an application that is packaged for Ubuntu but not available through Fedora’s standard repositories. If that application has a Snap published for it, you can install the Snap on Fedora without waiting for a native Fedora package.
Why Use Snap?
The main advantage is application portability.
An application packaged as a Snap can bring much of its required runtime environment with it rather than relying entirely on the exact library versions installed by your Linux distribution.
This can help when:
- An application is not available in your distribution’s repositories.
- The repository version is older than the version you need.
- Installing the application’s dependencies manually is difficult.
- You want the same application package on Fedora, Ubuntu and other supported distributions.
- You want applications to update independently from the operating system.
However, “bundled dependencies” should not be interpreted to mean that every Snap contains every Linux library. Snaps commonly use a shared base snap for common runtime components, and strict confinement controls access to the host system. (snapcraft.io)
Snap therefore improves portability, but it does not guarantee that every application will work perfectly on every Linux distribution. Desktop integration, hardware access and application-specific interfaces can still matter.
Installing Snap on Fedora
Fedora does not install snapd by default, but Snap can be enabled from Fedora’s package repositories.
Open Terminal and run:
sudo dnf install snapd
The official Snap documentation currently recommends this command for Fedora. (snapcraft.io)
After installation, either log out and log back in or restart the computer so that Snap’s paths are correctly updated.
For example:
sudo reboot
Enable Classic Snap Support
Some applications are published using classic confinement.
Classic confinement gives an application substantially broader access to the host system than a strictly confined Snap. Because of this, installing a classic Snap requires explicitly using the --classic option. (snapcraft.io)
On Fedora, the official Snap installation instructions recommend creating this symbolic link:
sudo ln -s /var/lib/snapd/snap /snap
This enables the conventional /snap path used by classic snaps. (snapcraft.io)
Again, log out and back in or reboot after creating the link.
Test the Installation
You can verify that Snap is functioning by installing the standard test package:
sudo snap install hello-world
Then run:
hello-world
You should see:
Hello World!
The official Snap documentation uses this as a basic test of the Fedora installation. (snapcraft.io)
Installing Snap on Ubuntu
On current Ubuntu releases, snapd is normally already installed. Snap’s documentation lists Ubuntu 18.04 and newer among distributions where snapd is pre-installed. (snapcraft.io)
Therefore, you can normally install a Snap directly.
For example:
sudo snap install gimp
If snap is not available, install snapd:
sudo apt update
sudo apt install snapd
Then log out and back in or reboot.
Installing Snap on Linux Mint
Linux Mint is slightly different.
Linux Mint has historically blocked the installation of snapd by default through an APT policy configuration. This means that attempting:
sudo apt install snapd
on a standard Linux Mint installation may produce a message indicating that the package is unavailable or has been blocked.
This is a deliberate Linux Mint policy rather than an indication that Snap itself does not work on Linux Mint.
If you specifically want to use Snap on Linux Mint, first remove the policy file:
sudo rm /etc/apt/preferences.d/nosnap.pref
Then update APT:
sudo apt update
and install snapd:
sudo apt install snapd
After installation, log out and back in or reboot.
Important: This changes Linux Mint’s default package policy. Users who do not specifically need Snap generally have no reason to make this change.
Linux Mint’s own software ecosystem also provides Flatpak support, which is an alternative application-packaging system and is more closely integrated into the Mint desktop experience.
Installing an Application from Snap
Once snapd is installed, installing a Snap is straightforward.
The general syntax is:
sudo snap install <package>
For example:
sudo snap install gimp
The official GIMP Snap is currently available from the Snap Store as the gimp package. (snapcraft.io)
After installation, the application normally becomes available from your desktop’s application menu.
You do not normally need to use sudo when launching the application.
For example:
gimp
The snap command is used to manage the package; gimp is the application command.
Example: Install GIMP with Snap
GIMP is an excellent example because it is available as a Snap from the verified GIMP team.
Install it with:
sudo snap install gimp
Then start it with:
gimp
The current Snap Store lists GIMP 3.2.4 in the stable channel, with the package maintained by the verified GIMP team. (snapcraft.io)
You can also find it through the Snap Store:
This is useful when the version available through your distribution’s repository does not meet your requirements.
Finding Applications in the Snap Store
You can browse available applications at:
Snap Store:
https://snapcraft.io/store
You can search the store for an application and then follow the installation instructions shown for that Snap.
For example:
https://snapcraft.io/gimp
shows the GIMP package, publisher information, available channels and installation command. (snapcraft.io)
The Snap Store also identifies verified publishers where applicable.
When installing third-party software, checking the publisher name and verification status is a useful security precaution.
Installing the Snap Store Application
Snap also provides a graphical Snap Store application.
After Snap is working, you can install it with:
sudo snap install snap-store
You can then launch Snap Store from your application menu.
The graphical store allows you to search for applications and install them without entering the snap install command manually.
However, the command line remains useful for scripting, troubleshooting and installing applications for which you already know the Snap package name.
Listing Installed Snaps
To see the applications currently installed through Snap, run:
snap list
No sudo is required.
You will see output containing information such as:
Name Version Rev Tracking Publisher Notes
gimp ... ... latest/stable gimp✓ -
The Notes column can also indicate special confinement modes such as classic. (snapcraft.io)
Updating a Snap
Snaps normally update automatically.
By default, the snapd service checks for updates several times a day and refreshes installed snaps when updates become available. (snapcraft.io)
Therefore, in normal use, you do not have to manually update every Snap.
Nevertheless, you can manually refresh a specific application.
For example:
sudo snap refresh gimp
You can refresh all installed Snaps with:
sudo snap refresh
To see which installed snaps have available updates:
snap refresh --list
The automatic update mechanism is one of Snap’s major advantages over manually installed application binaries. (snapcraft.io)
Automatic Updates
Snaps are designed to update automatically.
According to the current Snap documentation, snapd checks for updates four times a day by default. Updates can subsequently be downloaded and installed automatically. (snapcraft.io)
You can inspect or control refresh behavior with Snap’s configuration facilities.
For example, an update can be temporarily postponed with:
sudo snap refresh --hold=24h gimp
The exact update behavior can depend on the application’s channel and the snapd configuration. (snapcraft.io)
For most desktop users, allowing automatic updates is the simplest approach.
Removing a Snap
To remove an application installed through Snap, use:
sudo snap remove <package>
For example:
sudo snap remove gimp
The Snap and its managed data will be removed according to Snap’s removal behavior.
If you plan to reinstall the application later and want to remove its saved data as well, Snap also provides:
sudo snap remove --purge gimp
The --purge option prevents the creation of a retained snapshot during removal.
Snap Channels
Many Snaps provide more than one release channel.
Typical channels include:
stable
candidate
beta
edge
The stable channel is intended for general users.
You can inspect a Snap’s available channels with:
snap info gimp
To install a specific channel:
sudo snap install <package> --channel=beta
For example:
sudo snap install gimp --channel=beta
Beta and edge channels may contain newer but less-tested software.
For ordinary desktop use, the stable channel is generally preferable.
Snap Confinement
One of the most important differences between Snap and traditional packages is confinement.
Most Snaps use strict confinement. A strictly confined application does not automatically have unrestricted access to the rest of your operating system. Instead, Snap interfaces are used to grant access to resources such as files, network connections, removable media, cameras and other hardware. (snapcraft.io)
This provides an additional security boundary.
For example, a Snap may not automatically be able to access every location on your filesystem.
This is generally beneficial from a security perspective, but it can occasionally cause compatibility issues when an application expects access that has not been granted.
Classic Confinement
Some applications require broader system access.
These are distributed using classic confinement.
A classic Snap is substantially less restricted and behaves more like a traditionally installed package. Installing one requires an explicit option:
sudo snap install <package> --classic
For example, the official Snap Store installation command for Visual Studio Code uses:
sudo snap install code --classic
Classic confinement is inherently less restrictive than strict confinement, so you should pay attention when a Snap requires it. (snapcraft.io)
Where Are Snap Applications Installed?
Snap applications are mounted and managed by snapd.
The command-line launchers for installed Snaps are normally exposed through:
/snap/bin
and this location is added to the system PATH on supported systems. (snapcraft.io)
You generally do not need to manipulate these files manually.
Use:
snap list
and the normal snap commands to manage your installations.
Snap vs. Native Fedora Packages
On Fedora, you normally have several ways to install software.
DNF/RPM
sudo dnf install <package>
This uses Fedora’s native RPM packaging system.
Flatpak
flatpak install <package>
This is especially common for desktop applications.
Snap
sudo snap install <package>
Snap provides another packaging mechanism with its own update, confinement and distribution infrastructure.
None of these approaches is universally superior.
A native Fedora package is often preferable when an application is well maintained in Fedora and integrates closely with the operating system.
A Snap can be advantageous when the application is not available in Fedora, when you want a Snap-specific release, or when the application publisher uses Snap as its primary cross-distribution delivery mechanism.
Snap vs. Flatpak
Linux users frequently compare Snap with Flatpak.
Both are designed to reduce dependency problems and provide applications in a more distribution-independent format, but their architectures and ecosystems differ.
Snap is maintained around Canonical’s Snap Store and snapd infrastructure and supports desktop, server, cloud and IoT use cases.
Flatpak is heavily focused on desktop applications and integrates particularly well with Linux desktop environments and app stores such as Flathub.
On Fedora and Linux Mint, Flatpak is often a natural choice for graphical desktop applications, while Snap can be useful when the software is specifically distributed or maintained as a Snap.
The important question is therefore not simply which format is “better,” but which packaging format provides the application you need, from a publisher you trust, with the functionality you require.
Troubleshooting Snap on Fedora
snap: command not found
Make sure snapd is installed:
sudo dnf install snapd
Then log out and back in or reboot.
Check:
snap version
Classic Snap installation fails
Make sure the /snap symbolic link exists:
ls -ld /snap
If it does not exist:
sudo ln -s /var/lib/snapd/snap /snap
Then log out and back in or reboot. (snapcraft.io)
Snap cannot mount SquashFS
The official Snap documentation notes that some Fedora environments, particularly cloud images and containers, may lack the kernel support or packages needed to mount SquashFS images.
On affected Fedora systems, installing the required components may resolve the problem:
sudo dnf install fuse squashfuse
The documentation also identifies kernel-modules as a possible requirement on some systems. (snapcraft.io)
Snap works but an application cannot access a file
This may be due to Snap confinement.
Check the application’s interfaces:
snap connections <package>
For example:
snap connections gimp
Depending on the application, an appropriate interface may need to be connected.
Do not grant broader permissions unless you understand why the application requires them.
An Important Exception: Fedora Atomic Desktops
The standard Fedora instructions above are intended primarily for conventional Fedora systems.
Fedora Silverblue and other Atomic Fedora variants are different.
The Fedora Snap documentation specifically notes that Silverblue’s read-only root filesystem prevents creation of the traditional /snap symbolic link. (snapcraft.io)
Therefore, do not assume that the conventional Fedora snapd instructions will work identically on:
- Fedora Silverblue
- Fedora Kinoite
- Fedora Sway Atomic
- Other Fedora Atomic editions
These systems have an image-based operating-system architecture and should be treated separately.
Example Commands
Here is a quick reference to the most useful Snap commands.
Install Snap on Fedora
sudo dnf install snapd
Enable classic support on Fedora
sudo ln -s /var/lib/snapd/snap /snap
Install an application
sudo snap install <package>
Install a classic Snap
sudo snap install <package> --classic
List installed Snaps
snap list
Search the Snap Store
snap find <search-term>
Show information about a Snap
snap info <package>
Update one Snap
sudo snap refresh <package>
Update all Snaps
sudo snap refresh
List available updates
snap refresh --list
Remove a Snap
sudo snap remove <package>
Remove a Snap and purge retained data
sudo snap remove --purge <package>
Conclusion
Snap provides a convenient way to install Linux applications independently of the traditional package format used by your distribution.
The key advantage is that applications are packaged with much of the runtime environment they need, reducing dependence on the exact versions of libraries provided by the host distribution. Most Snaps also use strict confinement, providing an additional security boundary between the application and the host system. (snapcraft.io)
This makes Snap particularly useful when an application:
- Is unavailable in your distribution’s repositories;
- Is newer in the Snap Store;
- Has complicated dependencies;
- Is distributed primarily as a Snap; or
- Needs to be installed consistently across different Linux distributions.
On Fedora, install Snap with:
sudo dnf install snapd
then enable classic support if required:
sudo ln -s /var/lib/snapd/snap /snap
On Ubuntu, snapd is normally already installed on supported modern releases. (snapcraft.io)
On Linux Mint, Snap is deliberately disabled by default, so users who specifically want it must remove Mint’s nosnap.pref policy before installing snapd.
Once Snap is available, installing an application is simple:
sudo snap install gimp
and the application can normally be launched from the application menu or with its command:
gimp
Snaps also update automatically by default, although updates can be inspected and managed with the snap refresh commands. (snapcraft.io)
Snap is not the only universal Linux application format. Flatpak, AppImage and native RPM/DEB packages all have their own strengths. For Fedora, Ubuntu and Linux Mint users, the sensible approach is to choose the format that provides the best combination of application availability, integration, security, maintenance and compatibility for the particular software.
Useful Links
Snapcraft — Snap Store
https://snapcraft.io/store
Snap — Fedora installation
https://snapcraft.io/docs/tutorials/install-the-daemon/fedora/
Snap — General installation documentation
https://snapcraft.io/docs/tutorials/install-the-daemon/
Snap — Get started
https://snapcraft.io/docs/tutorials/get-started/
Snap — Confinement
https://snapcraft.io/docs/explanation/security/snap-confinement/
Snap — Classic confinement
https://snapcraft.io/docs/explanation/security/classic-confinement/
Snap — Automatic updates
https://snapcraft.io/docs/how-to-guides/manage-snaps/manage-updates/
GIMP Snap
https://snapcraft.io/gimp
Snap Store application
https://snapcraft.io/snap-store
Snap packages on Fedora
https://packages.fedoraproject.org/
Linux Mint
https://www.linuxmint.com/
Flatpak
https://flatpak.org/