Snap — универсальные пакеты программ и игр. Как управлять ими в Linux?


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 пакетов есть в большинстве дистрибутивов, но если по какой-либо причине ее у вас нет, то вы можете ее добавить.

Установка поддержки 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 <i><имя_пакета></i>

snap install shout


Не забывайте про автодополнение по клавише Tab.

Автодополнение работает и при написании названия программы:

  • при однократном нажатии будет дописано полное название приложения (если нет похожих);
  • при двойном появится список всех доступных пакетов с похожими названиями.

После установки, ярлык установленной программы можно найти среди других программ. Но данная функциональность может зависеть от конкретной системы.

Типы пакетов

Есть два типа snap пакетов:

  • Strict — большинство пакетов, которые изолированны от основной системы. Им для доступа к системным ресурсам требуется разрешения. Про то как настроить разрешения, будет чуть ниже в статье.
  • Classic — эти пакеты получают доступ ко всем ресурсам системы, то есть как обычные системные пакеты. При их установке требуется флаг —classic.

К примеру, многие IDE (интегрированные среды разработки) являются классическими snap пакетами.

Если мы попытаемся установить IntelliJ IDEA обычным способом:

snap install intellij-idea-community

то получим ошибку:

Выдается предупреждение, что этот пакет является классическим и имеет доступ ко всем ресурсам системы, и если мы хотим его установить, то надо использовать флаг —classic.

Указываем флаг и пробуем установку:

snap install intellij-idea-community --classic

Теперь всё ок:

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

При поиске в колонке Notes можно узнать, является ли snap пакет классическим

Удаление пакетов

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

snap remove gimp

Просмотр установленных пакетов

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

snap list

Информация о пакете

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

snap info postman

Обновление

Все snap пакеты автоматически обновляются. Проверка происходит 4 раза в день, в этом можно убедиться, выполнив следующую команду:

snap refresh --time

Обновление всех установленных пакетов:

snap refresh

Обновление одного пакета:

snap refresh gimp

Возврат к более ранней версии snap-пакета (Откат)

Если по какой-то причине вам не понравилось последнее обновление snap-пакета, вы можете вернуться к предыдущей версии с помощью следующей команды:

snap revert

Такая команда вернет необходимую версию snap-пакета и данные, соответствующие ПО. Если предыдущая версия snap-пакета получена из другого канала, она все равно установится, и канал останется прежним.

snap revert gimp

Выключение и включение snap пакетов

Если не хотите удалять какие-то приложения, но они в данный момент вам не нужны, то их можно просто отключить. В этом случае пропадет ярлык приложения и оно не будет обновляться. В любой момент можно будет его снова включить. Таким образом, нам не нужно будет опять его скачивать и устанавливать.

Чтобы отключить какое-либо snap приложение, используется следующая команда:

snap disable <имя_пакета>

Например:

snap disable supertuxkart

В любой момент можно включить snap пакет и сделать его снова доступным выполнив следующую команду в терминале:

snap enable <имя_пакета>

Например:

snap enable supertuxkart

Вот как это выглядит:

Просмотр последних изменений в пакете

Выполните следующую команду для просмотра списка изменений состояния системы. Она выводит список Snap-пакетов, которые вы недавно устанавливали, обновляли и удаляли вместе с метками времени, соответствующими каждой из этих операций.

snap changes

Запуск установленного пакета

Для запуска Snap-пакета можно использовать команду snap run <i><имя_пакета></i>

snap run gimp

Также приложения, установленные через Snap, можно запускать через главное меню вашего дистрибутива или лаунчер. Но данная функциональность может зависеть от конкретной системы.

Список запущенных служб

Чтобы просмотреть все установленные и запущенные снепы используйте:

snap services

Или посмотреть статус конкретного приложения:

snap services lxd Service
Startup  Current lxd.daemon  enabled  active

Перезапуск, запуск и приостановление snap-служб

Службы можно перезапустить с помощью команды:

snap restart

Все службы, необходимые для работы снепов, будут перезагружены по умолчанию:

Перезапуск конкретной службы:

snap restart lxd.daemon
Restarted.

Чтобы остановить запущенную службу, используйте следующую команду:

snap stop lxd.daemon
Stopped.

Чтобы запустить ранее остановленную службу, используйте следующую команду:

snap start lxd.daemon
Started.

Конфигурация переменных snap-пакета

Некоторые снепы, например, работающие в фоновом режиме, выставляют параметры конфигурации, которые можно изменить.

Команды для просмотра и изменения этих параметров конфигураций — snap get и snap set.

Выставленные параметры конфигурации установленного снеп можно посмотреть с помощью:

snap get <имя_пакета>

Чтобы изменить параметры конфигурации, задайте команду «snap set»:

snap set <имя_пакета> key=value

Скачивание и установка snap-приложений OFFline

Установить snap-приложения можно и без подключения к интернету. Для этого необходимо скачать файлы snap-приложений/пакетов, задав следующую команду:

snap download <имя_пакета>

Эта команда загрузит .assert и .snap файл. Скопируйте их на другую Linux систему, которая не имеет подключения к интернету. Затем установите загруженный файл с помощью следующей команды:

snap ack <имя_пакета.assert>
snap install <имя_пакета.snap>

Магазины приложений snap пакетов

То, что можно управлять snap пакетами из терминала, это конечно хорошо, но простому пользователю Linux больше нужны нормальные магазины приложений. К примеру, как GooglePlay на Android или как App Store на iOS.

Давайте посмотрим, что может предложить нам Linux в плане магазинов для установки snap пакетов.

Snapcraft Store — веб версия магазина snap приложений

Данный магазин приложений доступен по адресу: https://snapcraft.io/store
К сожалению, пока нет локализации, то есть, перевода на другие языки кроме английского. Но может в будущем это будет исправлено.

Можно искать по имени приложения, или просто просматривать по категориям. На странице какого-либо приложения, можно посмотреть скриншот окна приложения, детальную информацию.

Чтобы установить данное приложение, нужно нажать кнопку Install:

Можно скопировать консольную команду установки данного snap пакета. Либо (если у вас система Ubuntu) нажать кнопку «View in Desktop store», тогда будет открыт «Менеджер приложений Ubuntu», в котором можно уже установить выбранный snap пакет:

Менеджер приложений Ubuntu или Gnome Software

Для этого инструмента существует дополнительный плагин, который позволяет искать, просматривать, устанавливать и удалять snap пакеты.
Для этого вам необходимо доустановить его:

sudo apt install gnome-software-plugin-snap

В Ubuntu 18.04 и выше ничего делать не нужно дополнительно, всё уже предварительно настроено за вас.

Просто открываем и ищем приложения, к примеру, поищем vlc:

В «Подробностях» можно увидеть в «Источнике», что приложение будет установлено из Snap Store.

На вкладке «Установлено» также будут видны установленные snap пакеты:

Если перейти на страницу установленного приложения, можно не только «Запустить» и «Удалить», но и

настроить разрешения (Permissions) данного snap пакета:

Магазин Snappy / Snap Store

Согласитесь, что предыдущие два магазина приложений не совсем удобные:

  • В первом случае мы просто увидим консольную команду или откроем в Gnome Software (Менеджере приложений Ubuntu).
  • Во втором случае нужно окружение рабочего стола Gnome и кроме того, в нем ищутся не только лишь snap пакеты, а все пакеты приложений из всех подключенных репозиториев.

Поэтому есть Магазин Snappy, исключительно для управления snap пакетами:

Установить его можно по адресу: https://snapcraft.io/snap-store

или выполнив следующую команду в терминале:

snap install snap-store

После установки будет создан ярлык данного приложения.

Функционал похож на Менеджер приложений Ubuntu, только в этом магазине нет других пакетов, кроме snap.

Заключение

Мы кратко рассказали о том, что представляют собой Snap-пакеты и как с ними работать. Но это не единственные представители подобного типа пакетов в Linux. Также популярны пакеты Flatpak.

А в этом видео (хотя оно и на английском языке, но все понятно) все показано.

Поделитесь с друзьями

Добавить комментарий

10 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
Рафаэль

если я правильно понял, сайт скорее мертв, чем жив….. а жаль, ранее был хорош….

UALinux

Есть огромное желание сюда что-то загружать, но не хватает времени для этого 🙁

Boris

как снести все что относится к снапам нафиг включая и snapd в ubuntu ?

UALinux

$ sudo apt purge snapd

Останнє редагування 3 роки тому від UALinux
Boris

Чудово !!!
админ тыпочаще пишу как оптимизировать линуксы и сносить бредевые и не нужные проги
Например ну кому Нн-нада хрень под названием авахи кроме истеркив-маков

dmitriy.petruk

У меня на Elementary OS каждый примонтированный snap увеличивал время загрузки системы на пол секунды. Поставил 4 приложения — система загружается на 2 секунды медленнее. Поставил всё, что хотел -минус 17 секунд, и это на SSD. Удалил Snap с корнем из системы — всё работает как надо. Если есть задача — установить софт, который требует более новых зависимостей — то можно использовать Flatpak или AppImage. С ними подобных заморочек нет.… Читати далі »

Останнє редагування 3 роки тому від dmitriy.petruk
Максим

snap це звичайно класно, але в першу чергу для комерційного ПЗ. А от коли традиційне вже відкрите ПЗ починають пихати в snap… фуу. Це моя особиста думка. Але якось так стало, що розробники LinuxMint теж так думають. І відмовляються від підтримки цього в базовій поставці. Я завжди ставлю deb-пакет замість snap.

Денис

Ну хорошо а вот такой вопрос в desktop дистрибутиве имеем snap c установленным универсальным пакетом . Все работает всё здорово. Нашел я контейнер где это всё расположено и откуда всё это в своей изолированной от общей ос работает как из этого собрать полноценный rpm пакет ??? Или ничего не выйдет ?:так как я понимаю все это работает по виртуальной хост машиной на Ubunt`a ??

UALinux

1. конвертора snap 2 rpm нет, вам нужно руками все собирать самому, после того как он установиться.
2. виртуальная ubuntu тут ни причем. как это установить snap в Fedora уже указано в статье.

artem.fedorov

Где в каком repo искать Snap в Fedore 24 x 64 …..26 x 64 ?? и собственно сами сырцы
Мда ещё хотелось -бы короткий обзор про Snap для валенков так сказать 🙂 🙂

10
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x