Ubuntu snap – что это такое и с чем его едят?
Относительно недавно в Ubuntu появился новый инструмент — снапы (от англ. snap), но что это такое и как их использовать знают далеко не все пользователи.
Введение в снапы
Представим вполне реальную ситуацию. Пользователь устанавливает самую новую версию Ubuntu, пусть это будет версия 16.04 — именно в ней и появились впервые снапы по умолчанию. По определенным причинам пользователь отключает обновления. Такая ситуация не надумана. Мы все знаем, что после обновления системы Ubuntu, к сожалению, не всегда работает корректно и даже не всегда загружается.
Пользователя все устраивает и он спокойно себе использует дистрибутив некоторое время. Через несколько лет пользователь хочет установить новую версию приложения, например, браузера и обнаруживает, что он не может этого сделать.
Почему? Да потому что его дистрибутив устарел. для установки приложения нужны новые версии библиотек, а для их установки нужно обновить уже установленные пакеты. Иногда процесс настолько масштабный, что приходится обновлять дистрибутив. А ведь мы знаем, что пользователь не хочет этого делать по ряду причин, да и это опасно: система может быть разрушена нарушения связей между программами и библиотеками.
Вторая ситуация. Пусть у пользователя самая новая версия дистрибутива (на данный момент — это 18.10) — чтобы никто не упрекнул нас в надуманности ситуации. Мы знаем, что у традиционных пакетов есть зависимости и конфликты. Иногда нельзя установить то или иное приложение, поскольку его библиотеки конфликтуют с библиотеками уже установленными в системе.
Обе проблемы настолько обширны, что разработчики Ubuntu изобрели снапы. Все мы знакомы с понятием пакета. Пакет содержит саму программу, а также различные вспомогательные файлы — документацию, ресурсы (картинки, например), файлы локализации, сценарии Но пакет не содержит всего, что нужно для работы этой программы в системе. Например, если программе для работы нужна библиотека GL, то просто в пакете «прописывается» зависимость — нужно установить пакет для работы этого пакета. При установке программы менеджер пакетов (apt) производит разрешение зависимостей — устанавливает все необходимые для работы этой программы пакеты.
С одной стороны, такой подход позволяет экономить место на диске. Ведь одну и ту же библиотеку не нужно устанавливать несколько раз. С другой стороны, это порождает уже описанные ранее проблемы.
Снап — это решение всей головной боли, как пользователя, так и разработчика приложения. Снап можно считать таким пакетом, в котором содержится не только программа, но и все необходимые для ее работы библиотеки. Получается, что все, что нужно для работы программы содержится в снапе.
Snap-пакеты в Linux. Что это и как с ними работать
Пакетная система Snap была созданная компанией Canonical и изначально появилась в дистрибутиве Ubuntu Linux. Ее смысл заключается в том, что в пакет с приложением входит полный набор компонентов, необходимых для запуска данного приложения. Такие пакеты можно устанавливать в систему не заботясь о зависимостях, так как все зависимости уже включены в пакет.
Snap пакеты также называют «снапами».
Так как идея Snap пакетов имеет множество преимуществ, снапы быстро стали популярными и теперь используются не только в Ubuntu, но и в других дистрибутивах Linux: Debian, openSUSE, Arch Linux, Gentoo, Fedora и др.
Что такое Snap-пакет
Мы привыкли устанавливать приложения из DEB и RPM пакетов. Такие пакеты содержат саму программу, но не включают зависимости, которые требуются для запуска данного приложения.
Snap-пакет — это пакет, который помимо готовой сборки самого приложения, включает в себя все необходимые зависимости и может работать (почти) в любом дистрибутиве Linux.
Когда вы устанавливаете в систему приложение из Snap-пакета, то установка не влияет на другие пакеты и приложения. То есть такое приложение работает в своей «программной среде», но при этом оно может взаимодействовать с другими программами в системе.
Система управления Snap-пакетами поддерживает автоматическое обновление установленных в системе Snap-пакетов.
Установка поддержки Snap
Для управления Snap-пакетами в Linux используется демон snapd. Для его установки необходимо установить пакет — snapd.
Пользователь использует клиент snap для управления пакетами. Клиент snap входит в состав пакета snapd.
Установка поддержки Snap в Ubuntu Linux
В новых версиях Ubuntu поддержка Snap уже включена. Если это не так, то для установки Snap в Ubuntu Linux выполните команду:
sudo apt install snapd
Аналогично выполняется установка в Debian, Linux Mint, Elementary OS и других Ubuntu/Debian-based дистрибутивах.
Установка поддержки Snap в Fedora
sudo dnf install snapd sudo ln -s /var/lib/snapd/snap /snap
После установки выйдите и войдите в систему.
Установка поддержки Snap в Arch Linux
sudo yaourt -S snapd sudo systemctl enable --now snapd.socket
Работа со Snap-пакетами
Установка пакетов
Для установки пакетов используется команда snap install имя_пакета
Пример установки графического редактора GIMP из Snap-пакета:
snap install gimp
После ввода команды будет открыто окно для ввода пароля, так как требуются привилегии root-пользователя. Или используйте sudo:
sudo snap install gimp
Обновление пакетов
Для обновления пакетов используется команда snap refresh
Обновление всех установленных пакетов:
snap refresh
Обновление одного пакета:
snap refresh gimp
Удаление пакетов
Для удаления пакетов используется команда snap remove имя_пакета
snap remove gimp
Просмотр установленных пакетов
Для просмотра списка установленных пакетов используется команда snap list
snap list
Поиск пакетов
Для поиска пакетов используется команда snap find запрос
snap find gimp
Поиск выполняется не только по имени пакета, но и по описанию, поэтому можно использовать произвольный запрос:
snap find "photo editor"
Информация о пакете
Для получения информации о каком-либо пакете используется команда snap info имя_пакета
snap info gimp
Откат обновления
Если по каким-то причинам вы хотите отменить обновления, которые были выполнены над каким-либо Snap-пакетом, то можно использовать команду snap revert имя_пакета , чтобы вернуть пакет к предыдущей версии.
snap revert gimp
Временно отключить пакет
Чтобы временно отключить пакет используется команда snap disable имя_пакета
snap disable gimp
Чтобы снова сделать пакет доступным используется команда snap enable имя_пакета :
snap enable gimp
Запуск Snap-пакетов
Для запуска Snap-пакета можно использовать команду snap run имя_пакета
snap run gimp
Также приложения, установленные через Snap, можно запускать через главное меню вашего дистрибутива или лаунчер. Но данная функциональность может зависеть от конкретной системы.
Заключение
Мы кратко рассказали о том, что представляют из себя Snap-пакеты и как с ними работать. Snap-пакеты не единственные представители подобного типа пакетов в Linux. Также популярны пакеты AppImage и Flatpak.
“Снапы” – что это такое и с чем их едят? Ставим программы, которых нет в вашем дистрибутиве Linux в один клик
Любой пользователей Linux хоть раз сталкивался с ситуацией, когда не получается установить нужную программу в виду отсутствия необходимых библиотек в дистрибутиве, либо у вас установлены не те версии. Всё это может вылиться в такие танцы с бубном, которые порой заканчиваются переустановкой системы, а то и вовсе переходом на другой дистрибутив Linux.
Для решения данной проблемы придуманы “снапы” (snaps) и сегодня, на примере установки пакета Remmina в новый дистрибутив Deepin Linux, я о них и расскажу.
Что такое “снапы” (snaps) и чем они отличаются от традиционных пакетов DEB или RPM
Перейду сразу к сути, так как короткий формат заходит лучше и быстрее. В отличие от традиционных пакетов DEB или RPM, кроме самой программы “снап” содержит все необходимые для ее работы библиотеки. Можно сказать, что “снапы” являются более универсальным решением для установки программ в различные дистрибутивы Linux (подробнее о snap можно почитать на официальной страничке проекта).
Конечно, за такую универсальность приходится расплачиваться гораздо большими размерами пакетов и не получится экономить место на диске. По сути, одну и ту же библиотеку нужно устанавливать несколько раз. Зато такое решение позволяет максимально изолировать программы друг от друга и запускать свежие версии приложений в устаревших системах или наоборот, когда используете только что вышедший или бета-версию дистрибутива, для которых разработчики их ещё не адаптировали.
К примеру, не так давно я обозревал Deepin Linux V23 Beta, в котором не было привычного менеджера для работы с удаленным рабочим столом по протоколу RDP (приложение remmina). Давайте его и поставим.
Первым делом нужно установить snapd (в свежих версиях Ubuntu, начиная с 16.04 snapd уже установлен):
sudo apt install snapd
В других дистрибутивах команда может быть иной, всё зависит от установленного менеджера пакетов. После установки snapd я бы порекомендовал перезапустить компьютер, а то без этого следующие команды могут не заколоситься.
Попробуем теперь установить снап remmina, для чего выполним единственную команду в терминале:
sudo snap install remmina
Как видите, процесс установки “снапов” по сложности ничем не отличается от пакетов DEB или RPM. Забыл сказать что все snaps хранятся в отдельной папке /snap (местоположение тоже зависит от дистрибутива). Так что не стоит переживать, что со временем в системе у вас образуется “помойка” из кучи библиотек.
Для поиска доступных снапов можно ввести команду:
Просмотреть установленные снапы и обновить их можно командами snap list и snap resresh:
snap list
sudo snap resresh
Надеюсь, вы открыли для себя что-то новое и узнали для чего используются снапы. Если это так, не жалейте лайков и оставляйте комментарии, может я чего упустил и вам есть что добавить.
Подписывайтесь на канал
Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
При подготовке материала использовались источники:
https://www.xelent.ru/blog/snapy-v-ubuntu-chto-eto-takoe-i-s-chem-ego-edyat/
https://pingvinus.ru/note/snap
https://mdex-nn.ru/page/snap-v-linux-chto-eto-takoe.html