Download_Link
Участник клуба

Snap – универсальные пакеты для любого дистрибутива Linux. Это самая полная инструкция как их устанавливать, запускать и где брать программы и игры в этом формате.
Зачем вообще нужна ещё одна система для установки приложений?
Какой бы крутой и быстрой не была бы ваша операционная система, все решает количество написанного для нее ПО и легкость его установки. Поэтому и был сделан новый инструмент, который бы облегчил бы жизнь как разработчиков, так и пользователям.
Обычно в большинстве дистрибутивов надо устанавливать приложения из DEB и RPM пакетов. Такие пакеты содержат саму программу, но не включают зависимости, которые требуются для запуска данного приложения.
В отличие от привычных deb-пакетов и rpm-пакетов, snap пакеты несут в себе все зависимости.
То есть, когда мы устанавливаем deb-пакет или rpm-пакет, то предполагается, что все зависимости мы скачаем из подключенных репозиториев системы.
Но существует огромное количество всевозможных дистрибутивов Linux, как и их версий, и для разработчика это огромная проблема выпускать под весь этот зоопарк свой софт, а пользователю зачастую приходится самому решать проблему с отсутствующей зависимостью.
Файлы Snap-пакетов, имеющие расширение “.SNAP”, больше похожи на контейнеры. Приложения из этих пакетов являются самодостаточными уже скомпилированны, содержат все библиотеки, необходимые для их функционирования, и исполняются в изолированном защищенном окружении. Они устанавливаются в отдельные директории и не конфликтуют с основными компонентами системы. Поэтому все заработает сразу в любом дистрибутиве Linux который поддерживает Snap.
Когда вы устанавливаете в систему приложение из Snap-пакета, то установка не влияет на другие пакеты и приложения. То есть такое приложение работает в своей «программной среде», но при этом оно может взаимодействовать с другими программами в системе.
Преимущества Snap:
- Создаются один раз и для всех поддерживающих платформ. Помимо всего прочего, Snap-пакеты содержат все зависимости и библиотеки, а это значит, что каких-либо проблем с запуском и использованием почти не будет
- Поддерживает автоматическое обновление установленных в системе Snap-пакетов
- Один Snap для всего: дистрибутив Linux, сервер или облако
- Доступность разных версий: вы в любой момент можете переключаться между стабильной, бета и даже ежедневной версиями любого Snap-приложения
- Безопасность: Snap-приложения всегда запускаются в изолированной среде у которой нет доступа к остальной части вашей операционной системы
- Система управления Snap-пакетами
Установка поддержки Snap
Сейчас поддержка Snap пакетов есть в большинстве дистрибутивов, но если по какой-либо причине ее у вас нет, то вы можете ее добавить.
Установка поддержки Snap в Ubuntu, Kubuntu, Lubuntu, Xubuntu, Debian, Linux Mint, Elementary OS, GalliumOS, Kali Linux, KDE Neon, Parrot Security OS, Pop!_OS, Raspbian, Zorin OS и подобных
В новых версиях Ubuntu поддержка Snap уже включена. Если это не так, то для установки Snap выполните команду:
sudo apt update
sudo apt install snapd
systemctl enable --now snapd apparmor
Аналогично выполняется установка в Debian, Linux Mint, Elementary OS и других Ubuntu/Debian-based дистрибутивах.
Установка поддержки Snap в Arch Linux
из GIT репозитория
git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si
или из AUR репозитория:
yaourt -S snapd
Далее необходимо его активировать:
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в CentOS 7
sudo yum install epel-release
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в CentOS 8
sudo dnf install epel-release
sudo dnf upgrade
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в Fedora
sudo yum install kernel-modules
sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в Manjaro Linux
sudo pacman -S snapd
sudo systemctl enable --now snapd.socket
После этого необходимо перезагрузить систему.
Установка поддержки Snap в openSUSE
sudo zypper removerepo snappy
sudo zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.0 snappy
sudo zypper --gpg-auto-import-keys refresh
sudo zypper dup --from snappy
sudo zypper install snapd
sudo systemctl enable --now snapd
sudo systemctl enable --now snapd.apparmor
После этого необходимо перезагрузить систему.
Установка поддержки Snap в Red Hat Enterprise Linux (RHEL) 7
sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
sudo yum update
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в Red Hat Enterprise Linux (RHEL) 8
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf upgrade
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
После этого необходимо перезагрузить систему.
Установка поддержки Snap в Solus
sudo eopkg up
sudo eopkg install snapd
После этого необходимо перезагрузить систему.
Работа со Snap-пакетами
Теперь рассмотрим как же работать с этими пакетами.
Проверка работоспособности snap в системе
Для начала необходимо проверить ее работоспособность. Для этого выполним команду:
snap version
Если все хорошо, то вы увидите в консоли версию snap и snapd:

А если написать:
sudo snap
и дважды нажать клавишу TAB (автодополнение), то мы увидим сколько же команд у данного инструмента:

Сейчас мы рассмотрим самые общие и необходимые из них.
Поиск пакетов
Для получения списка всех доступных Snap-пакетов следует открыть окно эмулятора терминала и выполнить следующую команду:
snap find

Если вам нужно найти определенный пакет по имени, вы можете просто добавить поисковый запрос после приведенной выше команды:
snap find <имя_пакета>
Искать можно как по полному названию так и по его части
snap find vl

А также искать по описанию, поэтому можно использовать произвольный запрос. Если требуется поискать по нескольким словам, то надо заключать искомую фразу в кавычки:
snap find "JetBrains IDE"

Установка пакетов
Для установки пакетов используется команда snap install <имя_пакета>
snap install shout

Не забывайте про автодополнение по клавише Tab.
Автодополнение работает и при написании названия программы:
- при однократном нажатии будет дописано полное название приложения (если нет похожих);
- при двойном появится список всех доступных пакетов с похожими названиями.

После установки, ярлык установленной программы можно найти среди других программ. Но данная функциональность может зависеть от конкретной системы.
Типы пакетов
Есть два типа snap пакетов:
- Strict – большинство пакетов, которые изолированны от основной системы. Им для доступа к системным ресурсам требуется разрешения. Про то как настроить разрешения, будет чуть ниже в статье.
- Classic – эти пакеты получают доступ ко всем ресурсам системы, то есть как обычные системные пакеты. При их установке требуется флаг –classic.
Если мы попытаемся установить IntelliJ IDEA обычным способом:
snap install intellij-idea-community
то получим ошибку:

Выдается предупреждение, что этот пакет является классическим и имеет доступ ко всем ресурсам системы, и если мы хотим его установить, то надо использовать флаг –classic.
Указываем флаг и пробуем установку:
snap install intellij-idea-community --classic
Теперь всё ок:

Старайтесь не устанавливать классические snap пакеты от непроверенных разработчиков (без галочки).
При поиске в колонке Notes можно узнать, является ли snap пакет классическим

Удаление пакетов
Для удаления пакетов используется команда snap remove <имя_пакета>
snap remove gimp

Просмотр установленных пакетов
Для просмотра списка установленных пакетов используется команда:
snap list

Информация о пакете
Для получения информации о каком-либо пакете используется команда snap info <имя_пакета>
snap info postman

Запуск установленного пакета
Для запуска Snap-пакета можно использовать команду snap run <имя_пакета>
Код:
snap run gimp