Installing snap on CentOS

Snap is available for CentOS 9 Stream, CentOS 8 Stream, CentOS 8 and CentOS 7, from the 7.6 release onwards. It’s also available for Red Hat Enterprise Linux (RHEL) 7.6+ (see Installing snap on Red Hat Enterprise Linux).

The packages for CentOS 8/9 and CentOS 7 are in each distribution’s respective Extra Packages for Enterprise Linux (EPEL) repository. The instructions for adding this repository diverge slightly between CentOS 8/9 and CentOS 7, which is why they’re listed separately below.

:information_source: If you need to know which version of CentOS you’re running, type cat /etc/centos-release.

If you don’t already have the CentOS repository added to your distribution, it can be added as follows:

Adding EPEL to CentOS 8/9 Stream

The EPEL repository can be added to a CentOS 8/9 Stream system with the following command:

sudo dnf install epel-release
sudo dnf upgrade

:information_source: If you’re interested in understanding how these packages are built, see Building a snap RPM for Red Hat Enterprise Linux (RHEL) 8.

Adding EPEL to CentOS 7

The EPEL repository can be added to a CentOS 7 system with the following command:

sudo yum install epel-release

Missing packages with EPEL

Packages in the EPEL repository are built against dependencies from the current RHEL release, and these packages are regularly imported from RHEL by the CentOS project.

Occasionally, however, the exact version of a specific package used to build the snapd RPM has yet to be imported into the base CentOS repositories. This can cause missing package errors similar to the following:

Problem: package snapd-2.42.1-1.el8.x86_64 requires snapd-selinux = 2.42.1-1.el8,
but none of the providers can be installed.

In such an event, rather than waiting for EPEL packages to be updated, you can enable the continuous release (CR) repository. This repository contains packages destined for the next point release of CentOS and should satisfy any missing version mismatch dependencies.

Installing snapd

With the EPEL repository added to your CentOS installation, simply install the snapd package:

sudo yum install snapd

Once installed, the systemd unit that manages the main snap communication socket needs to be enabled:

sudo systemctl enable --now snapd.socket

To enable classic snap support, enter the following to create a symbolic link between /var/lib/snapd/snap and /snap:

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

Either log out and back in again or restart your system to ensure snap’s paths are updated correctly.

Snap is now installed and ready to go! If you’re using a desktop, a great next step is to install the Snap Store app.

1 Like

Hello,

snapd will not install on CentOS 8 Stream no matter what I do! Here are the details and yes, I DID activate the Continuous Release (CR) feature.

(base) [user@centos8-local ~]$ sudo dnf install snapd
[sudo] password for user: 
Last metadata expiration check: 0:09:00 ago on Sat 21 Jan 2023 04:22:39 PM EST.
Error: 
 Problem: package snapd-2.57.6-2.el8.x86_64 requires snapd-selinux = 2.57.6-2.el8, but none of the providers can be installed
  - conflicting requests
  - nothing provides selinux-policy >= 3.14.3-108.el8 needed by snapd-selinux-2.57.6-2.el8.noarch
  - nothing provides selinux-policy-base >= 3.14.3-108.el8 needed by snapd-selinux-2.57.6-2.el8.noarch
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

Hello - thanks for reporting this.

I know this doesn’t help, but I’ve just tested the instructions with a fresh (KVM, x86_64) CentOS 8 Stream installation and a fresh (KVM, x86_64) CentOS 9 Stream installation and they both worked as expected.