How to Install Snap on Fedora Linux

Installing Snap on Fedora adds a cross-distribution packaging format when you need software that DNF or Flatpak repositories do not offer in the version or form you want. Canonical maintains snapd, while individual publishers decide when to update their snaps, so some applications receive faster updates than Fedora packages while others lag behind. The Snap Store provides a graphical catalog for browsing and installing snaps without touching the command line.

Fedora defaults to DNF for system packages and ships Flatpak for desktop applications, both of which integrate smoothly with the distribution’s release cycle. Snap fills gaps when you need proprietary software, want a specific upstream build, or prefer managing application updates independently of Fedora’s schedule. This guide covers both terminal and GUI setup, explaining the installation process and practical use cases so you can decide whether Snap fits your workflow.

How Snap Package Management Works

If you are new to Snap, picture it as a packaging format that installs through snapd alongside Fedora’s native DNF toolchain. Each snap includes the runtime libraries it needs, so the same build runs on Fedora, Ubuntu, or other supported distributions without manual dependency wrangling.

Fedora ships with DNF (DNF5 on Fedora 41+) as the primary package manager and includes Flatpak by default on GNOME installations. Snap complements them when you need upstream-maintained builds, niche software not packaged for Fedora, or a controlled sandbox for proprietary apps. Releases still hinge on the snap publisher’s schedule, so weigh Snap against DNF and Flatpak based on how quickly each source delivers updates. For keeping your system packages current, consider setting up DNF Automatic for unattended updates.

Snap Command Syntax and Structure

The basic Snap syntax keeps things readable:

snap <command> [<package-name>] [--option]
  • snap: the command-line tool that talks to the Snapd daemon.
  • <command>: what you want Snap to do, such as install, refresh, remove, or list.
  • <package-name>: the name of the application you want to manage. Leave it out for commands like snap list that operate on everything.
  • –option: flags that tweak behavior, for example --channel=beta to switch release tracks.

At its simplest, installing a Snap looks like this:

sudo snap install vlc

This command grabs the VLC media player from the Snap Store, downloads its dependencies, and exposes it under /snap/bin so you can launch it from the terminal or desktop.

Use the following table as a quick reference for common Snap management tasks:

TaskOptionsWhat They Do
Install a new applicationsnap install package-name
snap install package-name --channel=edge
Downloads the snap; optionally selects a non-default channel like edge or beta.
Update existing snapssnap refresh
snap refresh package-name
Refreshes all snaps or a specific snap with the latest revision available.
Inspect what is installedsnap listDisplays every installed snap, including version, publisher, and tracking channel.
Roll back to a previous revisionsnap revert package-nameRestores the last working version if an update breaks your workflow.
Discover new snapssnap search keywordQueries the Snap Store catalog for apps matching the supplied keyword.

Choosing Between Snap, DNF, and Flatpak

Fedora gives you three package management systems, each with distinct advantages:

  • DNF (native RPM packages): Best for system-level software, core utilities, and packages that need tight integration with Fedora’s release cycle. DNF packages receive official Fedora QA testing and security updates through the standard repositories.
  • Flatpak: Ideal for desktop applications when you want sandboxing with GNOME Software integration. Flatpak excels at providing the latest desktop software (browsers, media players, productivity tools) while isolating them from your base system.
  • Snap: Choose Snap when you need upstream-published builds, proprietary software not available in Fedora repositories, or applications that vendors package directly. Update timing depends on the snap publisher, so some packages receive updates faster than DNF while others lag behind.

Many Fedora users run all three systems concurrently, selecting the package source that best fits each application’s requirements.

Installing Snapd on Fedora Linux

Most Fedora installations don’t ship with Snapd by default, so you’ll need to add it through DNF. The process takes just a few minutes and sets up everything you need to start using Snap packages.

Step 1: Check Whether Snapd Is Already Installed

Before touching your package manager, confirm whether Snapd is already present. Fedora’s spins occasionally ship it preinstalled, especially if you have previously added Snap support.

Check the installed version with:

snap version

If you receive version output for Snap and Snapd, you can jump ahead to the service activation section. If the command returns command not found, continue with the installation steps below.

Step 2: Update Your Fedora System

Make sure your Fedora system is up to date. This helps prevent conflicts and ensures compatibility with the latest software versions.

Run the following command to update your system:

sudo dnf upgrade --refresh

On Fedora 41 and newer, the dnf command runs DNF5 by default. This command refreshes repository metadata and upgrades installed packages to their latest versions. For major version upgrades, check out the guide on using the DNF5 system upgrade command.

Step 3: Install Snapd

Install snapd, the Snap daemon that manages Snap packages:

sudo dnf install snapd

DNF pulls Snapd and its dependencies (including FUSE-related packages) from Fedora’s repositories, laying the groundwork for Snap functionality on your system without any extra prerequisite commands.

Step 4: Reboot Your System

After installing Snapd, a system reboot is recommended. This step ensures that all changes take effect, including the creation of necessary system paths for Snap:

sudo reboot

Enabling Snap Services After Installation

After installing Snapd, enable its services so Snap can start automatically with your system and stay ready to manage applications.

Step 1: Enable and Start the Snapd Service

Activate the socket that launches Snapd on demand with the following command:

sudo systemctl enable --now snapd.socket

Fedora uses socket activation for Snapd; enabling snapd.socket ensures the daemon starts when needed and stays enabled after a reboot.

Step 2: Enable Classic Snap Support

Some Snap packages require classic confinement, which involves additional system permissions. To enable this feature, create a symbolic link as follows:

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

This link allows your system to access Snap packages with classic confinement, broadening the range of applications available through Snap.

Step 3: Install the Core Snap

The core Snap package provides essential runtime libraries for Snap applications. Install it using the command:

sudo snap install core

The core package ensures that your Snap environment is fully functional and compatible with a wide range of applications.

Step 4: Verify the Snapd Service

Finally, confirm that Snapd is running and operating as expected. Check the socket status with the following command:

systemctl status snapd.socket

If the socket is listed as active, you’re ready to start using Snap on your Fedora system.

Verifying Your Snap Installation

Before installing applications, confirm that Snap is fully operational with a quick health check.

Check Snap Version and Core Status

Verify that both the snap command-line tool and the snapd daemon are functioning:

snap version

You should see version information for both the snap tool and snapd. The exact numbers shift as Canonical publishes updates, but recent Fedora releases typically report Snap 2.x builds for both components.

Confirm Core Snap Installation

List your installed snaps to confirm the core runtime is present:

snap list

The output should show at minimum the core snap (or core20/core22 depending on the installed applications). If the list is empty or shows only core packages, your installation succeeded and you’re ready to install applications.

Validate Service Status

Ensure the snapd socket remains active after a reboot:

systemctl is-enabled snapd.socket

The command should return enabled. If you see disabled, revisit the service enablement section and run sudo systemctl enable snapd.socket again.

Essential Snap Commands for Package Management

Once Snap is in place and its services are enabled, you can begin managing applications via the command-line interface. Below are the essential commands you’ll use most often.

Installing a Snap Package

To install an application with Snap, use the install command followed by the package name. For example, to install Discord, a popular communication tool, run:

sudo snap install discord

This command downloads and installs Discord on your Fedora system, demonstrating how Snap simplifies package management.

Updating Snap Packages

Keeping your applications up to date is important for security and performance. Update all Snap-installed packages using:

sudo snap refresh

Snap automatically checks for and applies updates to your applications four times daily, ensuring you always have the latest features and patches. Running this command manually triggers an immediate update check.

Removing a Snap Package

If you no longer need an application, you can easily uninstall it with the remove command. For example, to remove Discord, run:

sudo snap remove discord

This removes the application while keeping your system clean and organized.

Searching for Snap Packages

Explore available applications in the Snap repository by using the search command. For instance, to look for Spotify, run:

snap search spotify

Replace spotify with the name of the application you want to find, and Snap will display a list of matching packages without requiring elevated privileges.

Checking Snap Version

To verify the installed version of Snap or troubleshoot issues, you can check its version with:

snap version

This command displays details about the Snapd service and its version, which is helpful for debugging or verifying compatibility.

Installing Snap Store GUI on Fedora

For users who prefer a graphical interface for managing software, the Snap Store provides an intuitive way to search, install, and manage applications without touching the command line.

Step 1: Install the Snap Store

The Snap Store is available as a Snap package, making installation quick and easy. To install it, run the following command:

sudo snap install snap-store

This command downloads and sets up the Snap Store application, integrating it into your Fedora system. Once installed, you’ll have a graphical interface to browse and install Snap packages.

Step 2: Launch the Snap Store

After installation, you can launch the Snap Store in several ways:

  • From the Terminal: Use the following command to start the Snap Store:
snap run snap-store
  • From the Desktop Environment: Open the system menu and search for “Snap Store.” Click on its icon to launch the application.

If the Snap Store doesn’t appear in the system menu immediately, reboot your system to update application entries.

Step 3: Navigating and Using the Snap Store

When you first open the Snap Store, it might take a minute or two to synchronize with Snapcraft’s servers and fetch the latest package data. Once loaded, you can:

  1. Search for Applications: Use the search bar to find specific apps or explore categories.
  2. Install Applications: Click the desired app, select the version, and follow the prompts to install.
  3. Manage Installed Applications: View, update, or remove applications directly from the GUI.

The Snap Store simplifies software management, offering a convenient alternative to command-line operations.

Managing Installed Snap Applications

Once the fundamentals are in place, use these workflows to keep snaps healthy without retracing the quick-start commands covered earlier.

Check Pending Updates Before Applying Them

Review what will change before a refresh runs automatically:

snap refresh --list

The output lists snaps with new revisions available so you can plan around restarts or major feature changes. When you are ready, follow up with sudo snap refresh to apply them.

Review Recent Snap Activity

Keep tabs on installs, refreshes, and removals whenever you need to troubleshoot:

snap changes

Snap assigns each task a change ID. Drill into a specific entry with snap change <id> to see timestamps, detailed status messages, and any errors that occurred.

Inspect Package Details and Channels

Confirm the release channel you track and review revision notes before switching builds:

snap info discord

This command shows available channels such as stable, candidate, beta, and edge. Switch with sudo snap refresh discord --channel=beta when you need an alternate build for testing.

Clean Up Older Revisions

Snaps keep previous revisions so you can revert, but those copies consume disk space. List what is installed with:

snap list --all discord

Remove a revision you no longer need by targeting its revision number:

sudo snap remove discord --revision=123

Only retire revisions marked as disabled in the list so the active build stays intact and you can still roll back if needed.

Troubleshooting SELinux Issues with Snap

Fedora’s SELinux (Security-Enhanced Linux) feature is essential for system security, but its strict policies can sometimes interfere with Snap operations. Below are steps to identify and resolve common SELinux-related issues. If you prefer to completely disable SELinux instead, consult the guide on how to disable SELinux on Fedora, though keeping it enabled with custom policies is the recommended approach.

Analyzing SELinux Denials

When Snap encounters permission issues, SELinux might be the cause. To check for denial messages, use the following command:

sudo ausearch -m AVC --start recent

This command retrieves Access Vector Cache (AVC) messages that provide insights into SELinux denials affecting Snap.

Adjusting SELinux Policies

Option 1: Temporarily Switch SELinux to Permissive Mode

To quickly test if SELinux is causing the issue, you can set it to permissive mode. This disables enforcement while continuing to log violations:

sudo setenforce 0

If Snap functions correctly in permissive mode, SELinux is likely the cause. Revert to enforcing mode when testing is complete:

sudo setenforce 1

Option 2: Create a Custom SELinux Policy

For a more permanent solution, you can create a custom SELinux policy to allow Snap operations.

If your system reports that audit2allow is missing, install Fedora’s SELinux policy utilities first:

sudo dnf install policycoreutils-python-utils
Generate Denial Logs

Start by generating denial logs with the following command:

sudo ausearch -m AVC --start recent > /tmp/avc.log

This captures SELinux denial information required for policy creation.

Create a Policy Module

Use the captured logs to create a policy module. Run the following command:

sudo audit2allow -i /tmp/avc.log -M snap_policy

This generates a custom policy file based on the SELinux denials.

Install the Policy Module

Finally, install the generated policy module with the following command:

sudo semodule -i snap_policy.pp

This applies the custom policy, resolving the SELinux conflict while keeping enforcement active.

Uninstalling Snap and Snap Store from Fedora

If you no longer wish to use Snap on your Fedora system, you can remove it entirely using the following steps. This process ensures all related files and services are cleaned up.

Step 1: Remove Installed Snaps

List the snaps you currently have installed, then remove each one with purge mode so application data is cleaned up:

snap list
sudo snap remove --purge <package-name>

Repeat the remove command for each application reported by snap list. Purging first ensures their revisions and writable data directories are deleted before you remove Snapd itself.

Step 2: Remove Snapd from Fedora

After the applications are gone, remove the Snapd package with DNF:

sudo dnf remove snapd

DNF deletes the Snapd RPM and its service files. Any remaining snap data stays in place until you clean it up in the next step.

Step 3: Clean Up Snap Data and Symlinks

Delete the classic confinement symlink and any leftover Snapd data so your system returns to its pre-Snap state:

sudo rm -f /snap
sudo rm -rf /var/lib/snapd

The first command removes the symlink created for classic snaps, and the second purges cached snap revisions along with remaining application data. Run sudo rm -rf /var/cache/snapd as well if you plan to reclaim download caches.

If you prefer to retain configuration or data for specific snaps, skip deleting /var/lib/snapd and back up the directories you still need.

Step 4: Verify the Removal

To confirm that Snap has been fully removed from your system, check that the snap command is no longer present:

which snap

If the command reports “no snap in” your PATH and systemctl status snapd shows an inactive or missing unit, the removal process is complete. Otherwise, revisit the previous steps to remove lingering files or services.

Common Snap Installation Issues and Solutions

While Snap is designed to be robust, you might occasionally encounter issues. Here are some common problems and how to address them on Fedora:

Issue: Snap Command Not Found

If you see an error like “bash: snap: command not found,” it could be due to a few reasons:

  • Snapd not installed: Ensure you have completed the installation steps for snapd. You can try reinstalling it if unsure: sudo dnf install snapd.
  • System not rebooted: After the initial snapd installation, a reboot is recommended to ensure all system paths and services are correctly initialized. If you skipped this, please sudo reboot.
  • PATH environment variable: The directory /snap/bin should be in your system’s PATH. A reboot usually fixes this. You can check with echo $PATH.

Issue: Snap application fails to launch or behaves unexpectedly

If a Snap application doesn’t start or crashes, try these steps:

  • Run from terminal: Launch the application directly from your terminal using snap run package-name (e.g., snap run discord). This will often display error messages that can help diagnose the problem.
  • Check Snap logs: Review logs for snapd using journalctl -u snapd for system-level issues.
  • Refresh the snap: Sometimes, simply refreshing the snap can resolve issues: sudo snap refresh package-name.
  • Revert the snap: If the issue started after an update, revert to the previous version: sudo snap revert package-name.
  • SELinux: As covered in its dedicated section, SELinux can often be a source of issues on Fedora. Refer to the “Troubleshooting SELinux Issues with Snap” section if you suspect SELinux denials.

Issue: Snap Store is slow or doesn’t show applications

The Snap Store might occasionally be slow to load, especially on its first launch, as it syncs application data.

  • Wait a bit: Give it a few minutes to fully synchronize.
  • Refresh Snap Store: Try closing and reopening it. You can also try refreshing it via the command line if it was installed as a snap itself: sudo snap refresh snap-store.
  • Check internet connection: Ensure your system has a stable internet connection.
  • Reboot: If the Snap Store icon doesn’t appear in your application menu after installation, a system reboot is often required.

Issue: Problems with classic confinement snaps

Snaps requiring classic confinement (e.g., some IDEs or development tools) need broader system access. Ensure you’ve enabled classic Snap support by creating the symbolic link: sudo ln -s /var/lib/snapd/snap /snap. If this link is missing or incorrect, classic snaps may not function properly. A reboot after creating the link can also help.

For more complex issues, consider seeking help from the Snapcraft Community Forum, which is a valuable resource for troubleshooting.

Additional Snap Resources

  • Snapcraft Homepage – Official site to learn about Snap, its features, and how it works across Linux distributions.
  • Snap Store – Browse a wide selection of Snap applications available for installation.
  • Snapcraft Community Forum – A helpful resource for asking questions, sharing feedback, and troubleshooting Snap-related issues.

Conclusion

Snap adds cross-distribution packaging to Fedora, offering an alternative when DNF and Flatpak don’t provide the specific build you need. By understanding snapd’s core and classic confinement models, using commands like snap refresh and snap revert, and knowing how to navigate SELinux conflicts, you can integrate Snap into your workflow when the situation calls for it.

Whether you stick with DNF for system packages, use Flatpak for GNOME Software integration, or add Snap for vendor-maintained builds, Fedora gives you the flexibility to choose the right tool for each job. Snap fits best when you need upstream-published packages, want automatic updates for third-party applications, or prefer a developer’s official build over distribution-packaged alternatives. For additional security configuration on your Fedora system, consider setting up firewalld to manage network access alongside Snap’s built-in sandboxing.

Leave a Comment