Управление пакетами в Linux-системах в последние несколько лет значительно улучшилось, особенно в том, что касается универсального или кросс-дистрибутивного упаковывания и распространения программного обеспечения. Одним из таких улучшений является формат пакетов Snap, разработанный Canonical, создателями популярного Ubuntu Linux.
Что такое Snap Packages?
Snaps — это кроссплатформенные, независимые от зависимостей и простые в установке приложения, упакованные со всеми своими зависимостями, чтобы работать на всех основных дистрибутивах Linux. На основе одной сборки snap (приложение) будет работать на всех поддерживаемых дистрибутивах Linux на настольном компьютере, в облаке и в Интернете вещей. В число поддерживаемых дистрибутивов входят Ubuntu, Debian, Fedora, Arch Linux, Manjaro и CentOS/RHEL.
Snaps безопасны, они изолированы и работают в песочнице, чтобы не подвергать риску всю систему. Они работают на разных уровнях изоляции (степень изоляции от базовой системы и друг от друга). Более того, каждый snap имеет интерфейс, тщательно выбранный создателем snap в соответствии с требованиями snap, для предоставления доступа к конкретным системным ресурсам за пределами их изоляции, таким как доступ к сети, доступ к рабочему столу и многое другое.
Ещё одним важным концептом в экосистеме snap являются Каналы. Канал определяет, какая версия snap установлена и отслеживается для обновлений, и состоит из и подразделяется на дорожки, уровни риска и ветви.
Основные компоненты системы управления пакетами snap:
- snapd – фоновый сервис, управляющий и поддерживающий ваши snap в системе Linux.
- snap – как формат пакета приложения, так и интерфейс командной строки для установки и удаления snap и выполнения многих других операций в экосистеме snap.
- snapcraft – фреймворк и мощный инструмент командной строки для сборки snap.
- Магазин snap – место, где разработчики могут делиться своими snap, а пользователи Linux их искать и устанавливать.
Кроме того, snap также обновляются автоматически. Вы можете настроить, когда и как происходят обновления. По умолчанию демон snapd проверяет обновления до четырёх раз в день: каждая проверка обновлений называется обновлением. Вы также можете вручную инициировать обновление.
Как установить Snapd в Linux
Как описано выше, демон snapd является фоновым сервисом, управляющим и поддерживающим вашу snap-среду в системе Linux, реализуя политики ограничения и контролируя интерфейсы, позволяющие snap получать доступ к конкретным ресурсам системы. Он также предоставляет команду snap и выполняет множество других функций.
Чтобы установить пакет snapd на вашу систему, выполните соответствующую команду для вашего дистрибутива Linux.
------------ [On Debian and Ubuntu] ------------ $ sudo apt update $ sudo apt install snapd ------------ [On Fedora Linux] ------------ # dnf install snapd ------------ [On CentOS and RHEL] ------------ # yum install epel-release # yum install snapd ------------ [On openSUSE - replace openSUSE_Leap_15.0 with the version] ------------ $ 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 ------------ [On Manjaro Linux] ------------ # pacman -S snapd ------------ [On Arch Linux] ------------ # git clone https://aur.archlinux.org/snapd.git # cd snapd # makepkg -si
После установки snapd на вашу систему, активируйте юнит systemd, управляющий основным сокетом snap, с помощью команды systemctl следующим образом.
На Ubuntu и его производных это должно произойти автоматически при установке пакета.
$ sudo systemctl enable --now snapd.socket
Обратите внимание, что вы не можете выполнить команду snap, если сокет snapd.socket не запущен. Выполните следующие команды, чтобы проверить, активен ли он и настроен ли для автоматического запуска при загрузке системы.
$ sudo systemctl is-active snapd.socket $ sudo systemctl status snapd.socket $ sudo systemctl is-enabled snapd.socket

Затем активируйте поддержку классических snap, создав символическую ссылку между /var/lib/snapd/snap и /snap следующим образом.
$ sudo ln -s /var/lib/snapd/snap /snap
Чтобы проверить версию snapd и инструмента командной строки snap, установленных на вашей системе, выполните следующую команду.
$ snap version

Как установить Snaps в Linux
Команда snap позволяет устанавливать, настраивать, обновлять и удалять snap, а также взаимодействовать с более крупной экосистемой snap.
Перед установкой snap вы можете проверить его наличие в магазине snap. Например, если приложение относится к категории “серверы чата” или “медиаплееры”, вы можете запустить эти команды для поиска, которые запросят магазин на наличие доступных пакетов в стабильном канале.
$ snap find "chat servers" $ snap find "media players"

Чтобы отобразить подробную информацию о snap, например, rocketchat-server, вы можете указать его имя или путь. Обратите внимание, что имена ищутся как в магазине snap, так и в установленных snap.
$ snap info rocketchat-server

Чтобы установить snap на вашу систему, например, rocketchat-server, выполните следующую команду. Если не указаны параметры, snap устанавливается с отслеживанием канала “стабильный” с строгой безопасностью.
$ sudo snap install rocketchat-server

Вы можете выбрать установку из другого канала: edge, beta или candidate, по какой-то причине, используя опции --edge
, --beta
или --candidate
соответственно. Или используйте опцию --channel
и укажите канал, из которого хотите установить.
$ sudo snap install --edge rocketchat-server $ sudo snap install --beta rocketchat-server $ sudo snap install --candidate rocketchat-server
Управление Snap в Linux
В этом разделе мы узнаем, как управлять snap в системе Linux.
Просмотр установленных Snap
Для отображения сводки установленных snaps на вашей системе используйте следующую команду.
$ snap list

Чтобы перечислить текущую ревизию используемой снепшот, укажите его имя. Вы также можете перечислить все доступные ревизии, добавив опцию --all
.
$ snap list mailspring OR $ snap list --all mailspring

Обновление и возврат к предыдущим версиям Снепшотов
Вы можете обновить указанный снепшот или все снепшоты в системе, если не указаны никакие, следующим образом. Команда refresh проверяет канал, отслеживаемый снепшотом, и загружает и устанавливает новую версию снепшота, если она доступна.
$ sudo snap refresh mailspring OR $ sudo snap refresh #update all snaps on the local system

После обновления приложения до новой версии вы можете вернуться к ранее использованной версии с помощью команды revert. Обратите внимание, что данные, связанные с программным обеспечением, также будут возвращены.
$ sudo snap revert mailspring

Теперь, когда вы проверяете все ревизии mailspring, последняя ревизия отключена, ранее использованная ревизия снова активна.
$ snap list --all mailspring

Отключение/Включение и удаление снепшотов
Вы можете отключить снепшот, если не хотите его использовать. При отключении бинарные файлы и службы снепшота больше не будут доступны, однако все данные останутся на месте.
$ sudo snap disable mailspring
Если вам снова понадобится использовать снепшот, вы можете включить его обратно.
$ sudo snap enable mailspring
Чтобы полностью удалить снепшот из вашей системы, используйте команду remove. По умолчанию удаляются все ревизии снепшота.
$ sudo snap remove mailspring
Чтобы удалить определенную ревизию, используйте опцию --revision
следующим образом.
$ sudo snap remove --revision=482 mailspring
Важно отметить, что при удалении snap его данные (такие как внутренние пользовательские, системные и конфигурационные данные) сохраняются snapd (версия 2.39 и выше) в виде снимка и хранятся в системе в течение 31 дня. В случае повторной установки снапа в течение 31 дня вы можете восстановить данные.
Заключение
Снапы становятся все более популярными в сообществе Linux, поскольку они предоставляют простой способ установки программного обеспечения на любое распределение Linux. В этом руководстве мы показали, как устанавливать и работать с снапами в Linux. Мы рассмотрели, как установить snapd, установить снапы, просмотреть установленные снапы, обновить и откатить снапы, а также отключить/включить и удалить снапы.
Вы можете задавать вопросы или связаться с нами через форму обратной связи ниже. В следующей части этого руководства мы рассмотрим управление снапами (команды, псевдонимы, службы и снимки) в Linux.