AlmaLinux

Install Snapd on Rocky Linux 10 and AlmaLinux 10

Snap packages aren’t the first choice for everyone on the RHEL family, but some applications only ship as snaps (Chromium, Canonical’s Multipass, certain developer tools) and Rocky Linux 10 supports them cleanly through the snapd daemon in EPEL. This guide walks through enabling snap support on Rocky Linux 10 and AlmaLinux 10 from scratch: install the daemon, wire up the classic /snap directory symlink, bring the socket online, and install your first snap. Before you dive in, make sure your Rocky 10 base is set up correctly by following our Rocky Linux 10 post-install checklist and that Docker isn’t fighting with snapd for the same cgroup scope.

Original content from computingforgeeks.com - post 3366

Tested April 2026 on Rocky Linux 10.1 with snapd 2.70-1.el10_1 from EPEL, kernel 6.12.0-124.8.1

Step 1: Enable EPEL

snapd is only packaged in EPEL for the RHEL 10 family. The EPEL release metapackage is in the extras repo that ships with Rocky and Alma, so installing it is a single command:

sudo /usr/bin/crb enable
sudo dnf install -y epel-release

You also need CRB (CodeReady Builder) enabled because several EPEL packages depend on libraries from it. The crb enable command is the Rocky/Alma way to flip CRB on.

Step 2: Install snapd

With EPEL enabled, install the snapd package from the EL 10 branch:

sudo dnf install -y snapd

This pulls in snap-confine (the sandbox isolation helper), snapd-selinux (the SELinux policy module so the daemon works with Rocky 10’s enforcing policy), squashfs-tools, squashfuse, and xdelta. On a fresh Rocky 10 minimal image this is around 7 MB of download:

  snap-confine-2.70-1.el10_1.x86_64     snapd-2.70-1.el10_1.x86_64
  snapd-selinux-2.70-1.el10_1.noarch    squashfs-tools-4.6.1-6.el10.x86_64
  squashfuse-0.5.2-2.el10_0.x86_64      squashfuse-libs-0.5.2-2.el10_0.x86_64
  xdelta-3.1.0-22.el10_0.x86_64

Step 3: Enable and start the snapd socket

snapd uses systemd socket activation: the socket starts on boot, and the main snapd.service unit only fires when an actual request comes in. Enable and start the socket:

sudo systemctl enable --now snapd.socket

Confirm both the socket and the service state:

sudo systemctl is-active snapd.socket
sudo systemctl is-active snapd

The socket should report active and snapd itself may report inactive initially. That’s expected: snapd starts on demand when the first snap command is issued.

Snaps that are published as “classic confinement” (the ones that need access to the entire host filesystem) expect the snap store to be mounted at /snap. Rocky 10 puts it at /var/lib/snapd/snap, so a symlink fixes the mismatch:

sudo ln -sf /var/lib/snapd/snap /snap
ls -la /snap

The symlink should point at the real snapd state directory:

lrwxrwxrwx. 1 root root 19 Apr 12 03:05 /snap -> /var/lib/snapd/snap

Without this symlink, running a classic snap like Multipass or the snap install --classic command for some editors will fail to launch. Do it now and move on.

Step 5: Confirm snap is operational

Check the snap CLI and daemon versions. Both should match the package you installed:

snap --version

The output lists snap, snapd, series, the host distro, and the running kernel:

snap    2.70-1.el10_1
snapd   2.70-1.el10_1
series  16
rocky   10.1
kernel  6.12.0-124.8.1.el10_1.x86_64

If the snap command reports snapd as missing or “cannot communicate with server”, wait a few seconds and retry. On first boot, the socket takes a moment to accept connections.

Step 6: Install your first snap

Every snap install needs the core base snap, which is the minimal root filesystem snaps run against. It’s installed automatically with the first app you pull, but you can install it explicitly first:

sudo snap install core

Then list what’s installed:

snap list

From here, install any snap you want. A few examples worth trying:

sudo snap install hello-world
sudo snap install htop
sudo snap install chromium
sudo snap install code --classic

The --classic flag is only needed for snaps that declare classic confinement. For everything else, the default strict confinement applies automatically.

Troubleshooting

Error: “system does not fully support snapd: cannot mount squashfs”

This shows up on nested virtualization and some minimal kernels where the squashfs filesystem module isn’t loaded. On a baremetal Rocky 10 install the squashfs module is in the default kernel and works without configuration. For a nested VM, load the module manually and retry:

sudo modprobe squashfs
lsmod | grep squashfs

If the module isn’t available at all, the kernel was built without squashfs support (unusual on Rocky 10 stock kernels) and snapd is effectively unusable until you rebuild with CONFIG_SQUASHFS=m.

AppArmor warnings from snapd

On Ubuntu, snapd uses AppArmor to enforce confinement. On Rocky 10 there’s no AppArmor, so snapd falls back to SELinux and the delta mount is managed by the snapd-selinux policy module the package drops in. You’ll see a log message on startup about AppArmor being disabled. This is informational and can be ignored.

Keeping snaps up to date

snapd automatically refreshes installed snaps a few times a day. Check the next scheduled refresh:

snap refresh --time

To run a refresh immediately across everything:

sudo snap refresh

For applications where you want to defer updates (shell in progress, long-running service), use snap refresh --hold to pause auto-updates for that snap for up to 90 days.

Wrap up

snapd on Rocky Linux 10 is a single install and a single symlink away. It does not replace DNF — stay with native RPMs for anything the base repos, EPEL, RPM Fusion, or Remi provide. Reach for snap only when a specific upstream distributes that way, typically for GUI apps or IDE tooling. For broader sysadmin hygiene on Rocky 10, our post-install tips guide covers EPEL, SELinux, firewalld, and SSH hardening in one pass. For keeping /tmp out of the way of snap mounts on constrained servers, see our /tmp on a separate filesystem reference. And for a modern text viewer to inspect snap YAML config files, check out the bat command guide.

Related Articles

Rocky Linux Install Java 25 (JDK 25) on Rocky Linux 10 / AlmaLinux 10 CentOS Install PostGIS on Rocky Linux 8|CentOS 8|AlmaLinux 8 CentOS How To Install PHP 8.4 on CentOS Stream 10 / 9 AlmaLinux Install Supervisor and Celery on Rocky Linux 10

Leave a Comment

Press ESC to close