How to Install Snap on Fedora 44

Install Snap on Fedora 44 Linux with setup instructions and troubleshooting tips for smooth app management.

UpdatedPublished AuthorJoshua JamesRead time8 minGuide typeFedora

Install Snap on Fedora when a package you need is published through Canonical’s Snap Store and DNF or Flatpak do not provide the build, channel, or vendor packaging you want. Fedora still treats DNF as the system package manager and Flatpak as the usual desktop-app format, but mutable Fedora systems such as Workstation, Server, and Spins can install snapd from Fedora’s own repositories.

The mutable-host workflow targets current Fedora releases, including Fedora 44 and Fedora 43. Fedora Atomic desktops such as Silverblue and Kinoite use a read-only root filesystem, so the normal DNF and /snap symlink workflow does not fit them cleanly. On those systems, use Flatpak first unless you intentionally want to manage host package layering and reboots with rpm-ostree.

Install Snapd on Fedora Linux

Snap support on Fedora comes from the snapd RPM. A clean install also pulls the package surfaces snapd needs on Fedora, including snap-confine, snapd-selinux, squashfs-tools, and xdelta.

Check Whether Snapd Is Already Installed

Start by checking whether the snap command already exists:

snap version

If Fedora prints snap and snapd version lines, skip to the verification steps. If the shell reports snap: command not found, continue with the DNF install.

Refresh Fedora Packages

Refresh repository metadata and apply pending updates before adding a new package manager daemon:

sudo dnf upgrade --refresh

This is Fedora’s normal package-update path. If you want Fedora system packages to update automatically later, set up DNF Automatic on Fedora. For major Fedora release upgrades, use the dedicated DNF5 system-upgrade workflow instead of treating dnf upgrade as a release-upgrade command.

Install Snapd from Fedora Repositories

Install the Fedora-packaged Snap daemon:

sudo dnf install snapd

Fedora 44 currently provides snapd from the Fedora updates repository. The package creates and enables snapd.socket, but enabling it explicitly keeps the next step clear on systems where the package was installed earlier or the socket was disabled. For broader package-manager examples, see the DNF5 install command guide for Fedora.

Enable Snapd Socket and Classic Support

Enable the systemd socket that starts snapd on demand:

sudo systemctl enable --now snapd.socket

Fedora’s snapd package stores snaps under /var/lib/snapd/snap. Classic-confined snaps expect a /snap path, so create the symlink used by Canonical’s Fedora Snap installation instructions when it is not already present:

if [ ! -e /snap ]; then
    sudo ln -s /var/lib/snapd/snap /snap
fi

Sign out and back in, or reboot when you need desktop launchers and the /snap/bin PATH entry to appear in a graphical session. For immediate terminal validation, wait for snapd’s first seeding step before installing your first snap:

sudo snap wait system seed.loaded

This wait step prevents the early first-run error device not yet seeded or device model not acknowledged, which can appear if you install a snap immediately after starting snapd.

Verify Snapd on Fedora

Confirm that the snap client, snapd daemon, Fedora release, kernel, and architecture are visible:

snap version

A current Fedora 44 system reports lines like these, although your package and kernel values can differ:

snap          2.75.2-0.fc44
snapd         2.75.2-0.fc44
series        16
fedora        44
kernel        7.0.8-200.fc44.x86_64
architecture  amd64

Then verify the socket is enabled and active:

systemctl is-enabled snapd.socket
systemctl is-active snapd.socket

Expected output:

enabled
active

Test Snap with Hello World

Install Canonical’s small test snap to confirm the store and runtime are working:

sudo snap install hello-world

Run the snap through snapd:

snap run hello-world

Successful runtime output is short:

Hello World!

Remove the test snap after the check so it does not stay in your installed app list:

sudo snap remove --purge hello-world

Install Snap Store GUI on Fedora

The Snap Store GUI is optional. The terminal workflow above is enough for installing and updating snaps, but the GUI helps when you want to browse packages, check screenshots, compare channels, or manage installed snaps visually. Canonical currently brands the snap-store package as App Center on Snapcraft, while some launchers and older screenshots still call it Snap Store.

Install Snap Store on Fedora

Install the GUI from the Snap Store:

sudo snap install snap-store

A bare install currently tracks the App Center 2/stable channel on Fedora:

snap list snap-store

Relevant output includes:

Name        Version         Rev   Tracking  Publisher    Notes
snap-store  0+git.10310e85  1367  2/stable  canonical**  -

Installing Snap Store can also pull runtime snaps such as bare, core24, gnome-46-2404, gtk-common-themes, and graphics support snaps. That is normal for a graphical snap and explains why the first GUI install can take longer than a small command-line snap.

Launch Snap Store on Fedora

Launch it from a terminal with the snap-managed command:

snap run snap-store

From the desktop, open Activities and search for App Center or Snap Store. If the launcher does not appear right away, sign out and back in so the desktop session reloads snapd’s application entries.

Use Snap Store on Fedora

After the GUI opens, you can search the catalog, inspect publishers, install apps, remove apps, and switch available channels. Treat publisher names carefully: a verified Snap Store publisher marker is a store trust signal, but it does not always prove the upstream project itself publishes that snap.

Manage Snap Packages on Fedora

Once snapd is installed, Snap commands are the same on Fedora as on other snap-enabled distributions. Use snap run app-name for reliable terminal launches because it does not depend on your current shell seeing /snap/bin.

Search and Inspect Snap Packages

Search the store from the terminal:

snap search spotify

Inspect publisher, channel, contact, and release information before installing an app:

snap info discord

When a Snapcraft page or snap info output names a publisher, compare that publisher with the upstream project’s own Linux packaging notes before calling the snap official or upstream-maintained.

Install and Launch a Snap App

Install a snap by package name:

sudo snap install discord

Launch it through snapd:

snap run discord

Do not add --classic by habit. Classic confinement is a package-specific choice. Use it only when snap info, the Snapcraft page, or the install error says that snap requires classic confinement:

sudo snap install code --classic

The /snap symlink created earlier is what lets classic-confined snaps work on Fedora.

Refresh Snap Packages

Snapd checks for updates automatically several times per day. Review pending updates before applying them manually:

snap refresh --list

Refresh all installed snaps immediately:

sudo snap refresh

Check the current refresh schedule and the next planned refresh window:

snap refresh --time

If automatic refreshes need a maintenance window, set one with snapd’s system refresh timer. This example limits refreshes to 4:00 through 7:00 local time:

sudo snap set system refresh.timer=4:00-7:00
snap get system refresh.timer

Snap’s update controls are documented in the official Snap update management guide.

Switch Snap Channels

Check available channels before switching tracks:

snap info package-name

Switch an installed snap to another channel only when you understand that channel’s stability level:

sudo snap refresh package-name --channel=beta

Return to the stable channel with:

sudo snap refresh package-name --channel=stable

Review Changes and Revert a Snap

List recent snapd tasks:

snap changes

Inspect a specific change ID from that list, replacing CHANGE-ID with the number shown by snap changes:

snap change CHANGE-ID

If a refresh breaks an application, revert to the previous revision while you investigate:

sudo snap revert package-name

Remove One Snap App

Use purge mode when you want snapd to remove the app without saving an automatic recovery snapshot:

sudo snap remove --purge package-name

Verify that the app is no longer installed:

snap list package-name 2>/dev/null || echo "package-name not installed"

If you remove without --purge, snapd can save a recovery snapshot. Review saved snapshots with sudo snap saved and remove an unwanted snapshot with sudo snap forget <set-id>.

Troubleshoot Snap on Fedora

Most Fedora Snap problems fall into a few predictable categories: a session that has not picked up /snap/bin, snapd still seeding after installation, a missing classic confinement symlink, squashfs support on trimmed images, or SELinux denials.

Snap Command Not Found on Fedora

If snap is missing, confirm that snapd is installed:

rpm -q snapd

If the package is installed but app commands are missing from your shell, check whether /snap/bin is in your session PATH:

echo "$PATH" | tr ':' '\n' | grep /snap/bin

Open a new login session, sign out and back in, or reboot the desktop session when the PATH entry is missing. Use snap run app-name for a terminal launch that works even before the shortcut path is visible.

Cannot Communicate with Snapd Socket

If a snap command cannot reach /run/snapd.socket, snapd is either not installed, not socket-activated, or still starting:

error: cannot communicate with server: Post "http://localhost/v2/snaps": dial unix /run/snapd.socket: connect: no such file or directory

Check the package and socket state:

rpm -q snapd
systemctl is-enabled snapd.socket
systemctl is-active snapd.socket

Reinstall or re-enable the socket when those checks show snapd is missing or inactive:

sudo dnf install snapd
sudo systemctl enable --now snapd.socket
sudo snap wait system seed.loaded

Device Not Yet Seeded Error

If the first install fails with device not yet seeded or device model not acknowledged, snapd is still finishing its first startup. Wait for seeding, then retry the install:

sudo snap wait system seed.loaded

Classic Confinement Requires /snap

Classic-confined snaps can fail when Fedora does not have the expected /snap path. Check where the path resolves:

readlink -f /snap
test -d /var/lib/snapd/snap && echo "snap mount directory exists"

The important result is that /snap resolves to snapd’s Fedora mount directory:

/var/lib/snapd/snap
snap mount directory exists

Create it when it is missing:

if [ ! -e /snap ]; then
    sudo ln -s /var/lib/snapd/snap /snap
fi

Cannot Mount Squashfs Image

Cloud images, containers, and trimmed Fedora environments can fail the first snap install with a squashfs mount error. On normal Fedora hosts, make sure the kernel module package is present:

sudo dnf install kernel-modules

For container-style environments where kernel modules are not available inside the container, Canonical’s Fedora troubleshooting path uses FUSE helpers:

sudo dnf install fuse squashfuse

If the host kernel itself lacks squashfs support, fix that on the host rather than trying to work around it inside snapd.

SELinux Denials with Snap on Fedora

Fedora’s snapd install includes snapd-selinux, which provides the packaged SELinux policy. Confirm it is installed before creating any local policy module:

rpm -q snapd-selinux

If audit tooling is missing, install it before checking recent denials:

sudo dnf install audit

Search recent AVC denials for snap-related entries:

sudo ausearch -m AVC -ts recent | grep -i snap || true

If no snap-related AVCs appear, SELinux is probably not the blocker. If denials remain after Fedora and snapd are fully updated, treat them as a policy bug or app-specific confinement issue. Avoid blindly generating an audit2allow module from every denial because that can grant broader access than the snap actually needs.

Fedora Atomic Desktop Boundary

Fedora Silverblue, Kinoite, Sway Atomic, and other Atomic desktops do not follow the same mutable-host package flow. Their read-only root filesystem can block the /snap symlink required for classic snap support. Prefer Flatpak on Atomic desktops, or document a separate rpm-ostree layering workflow only when you are prepared to handle the required reboot, rollback, and cleanup behavior.

Remove Snap and Snap Store from Fedora

Remove installed snaps first, then remove the Fedora RPM. This order keeps app cleanup explicit before the package manager removes snapd itself and its dependencies.

Remove Installed Snap Apps

List installed snaps:

snap list

Remove each app you no longer need. Use the package name from the first column of snap list:

sudo snap remove --purge package-name

For Snap Store specifically, remove the GUI snap with:

sudo snap remove --purge snap-store

Remove Snapd RPM Packages

Disable the socket and remove snapd with DNF:

sudo systemctl disable --now snapd.socket
sudo dnf remove snapd

On Fedora 44, removing snapd also removed the unused dependency packages installed with it: snap-confine, snapd-selinux, squashfs-tools, and xdelta. Review DNF’s transaction summary before confirming in case those packages are still needed by another workflow on your system.

Clean Remaining Snap Data

Check which Snap paths remain after package removal:

ls -ld /snap /var/lib/snapd /var/cache/snapd /var/snap "$HOME/snap" 2>/dev/null || true

The cleanup commands permanently delete system-wide snap state and per-user snap settings for the current account. Back up any app data you still need from /var/lib/snapd, /var/snap, or $HOME/snap before deleting those paths.

Remove the leftover symlink, system data, cache, and current user’s snap directory when you want a full reset:

sudo rm -f /snap
sudo rm -rf /var/lib/snapd /var/cache/snapd /var/snap
rm -rf "$HOME/snap"

Verify Snap Removal on Fedora

Confirm the Fedora package is gone:

rpm -q snapd

Expected output after removal:

package snapd is not installed

Clear the shell’s command cache and confirm the snap command no longer resolves:

hash -r
command -v snap || echo "snap command removed"

Check the service unit state:

systemctl status snapd.socket

Expected output starts with:

Unit snapd.socket could not be found.

Finally, verify each cleanup path is absent:

for path in /snap /var/lib/snapd /var/cache/snapd /var/snap "$HOME/snap"; do
    if [ -e "$path" ]; then
        echo "leftover: $path"
    else
        echo "missing: $path"
    fi
done

Official Snap Resources for Fedora

  • Install snap on Fedora: Canonical’s Fedora-specific snapd setup, including the classic confinement symlink and squashfs troubleshooting notes.
  • App Center / Snap Store: Canonical’s current Snapcraft listing for the snap-store package and its channels.
  • Manage snap updates: Official refresh, hold, and timer controls for snapd.
  • Snapcraft forum: Community support for snapd, Snapcraft, and Snap Store issues.

Conclusion

Snap is now available on mutable Fedora systems as a secondary app source alongside DNF and Flatpak. Use it when a Snap Store publisher, channel, or package format fits the job, then keep snap info, refresh windows, and snap remove --purge checks close by. Fedora system packages still belong to DNF, so keep Snap app updates separate from routine system maintenance.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show more of our fresh Linux tutorials in Top Stories and From your sources when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: