Относительно недавно в Ubuntu появился новый инструмент — снапы (от англ. snap), но что это такое и как их использовать знают далеко не все пользователи.
Представим вполне реальную ситуацию. Пользователь устанавливает самую новую версию Ubuntu, пусть это будет версия 16.04 — именно в ней и появились впервые снапы по умолчанию. По определенным причинам пользователь отключает обновления. Такая ситуация не надумана. Мы все знаем, что после обновления системы Ubuntu, к сожалению, не всегда работает корректно и даже не всегда загружается.
Пользователя все устраивает и он спокойно себе использует дистрибутив некоторое время. Через несколько лет пользователь хочет установить новую версию
Почему? Да потому что его дистрибутив устарел.
Вторая ситуация. Пусть у пользователя самая новая версия дистрибутива (на данный момент — это 18.10) — чтобы никто не упрекнул нас в надуманности ситуации. Мы знаем, что у традиционных пакетов есть зависимости и конфликты. Иногда нельзя установить то или иное приложение, поскольку его библиотеки конфликтуют с библиотеками уже установленными в системе.
Обе проблемы настолько обширны, что разработчики Ubuntu изобрели снапы. Все мы знакомы с понятием пакета. Пакет содержит саму программу, а также различные вспомогательные файлы — документацию, ресурсы (картинки, например), файлы локализации,
С одной стороны, такой подход позволяет экономить место на диске. Ведь одну и ту же библиотеку не нужно устанавливать несколько раз. С другой стороны, это порождает уже описанные ранее проблемы.
Снап — это решение всей головной боли, как пользователя, так и разработчика приложения. Снап можно считать таким пакетом, в котором содержится не только программа, но и все необходимые для ее работы библиотеки. Получается, что все, что нужно для работы программы содержится в снапе.
Не нужно бояться, что система превратится в свалку, где перемешаны старые и новые версии библиотек. Снапы устанавливаются в отдельной папке в виде защищенного от записи образа. Изменения, которые должен внести снап в файловую систему (например, в каталог /lib) будут внесены в виртуальной файловой системе. Таким образом, установка снапа никак не повлияет на работу основной системе. Все. Все проблемы с совместимостью версий разных приложений решены.
Первым делом нужно установить snapd. В Ubuntu 16.04 и более новых версиях ничего делать не нужно, поскольку snapd уже установлен. В Ubuntu 14.04 нужно ввести команду:
sudo apt install snapd
В других дистрибутивах команда будет другой, например, в Fedora команда установки выглядит так:
sudo dnf install snapd
После того, как snapd установлен, можно попробовать установить первый снап. Но пока мы не знаем, как он называется. Для поиска доступных снапов введите команду:
snap find <название>
Например
snap find hello
Вывод будет примерно таким:
hello 2.10 canonical — GNU Hello, the «hello world» snap
В первой колонке приводится название снапа. Пусть мы хотим установить снап hello:
sudo snap install hello
Как видите, команда установки снапа аналогична команде установки пакета, только вместо apt используется утилита snap.
Кстати, после установки снапа можно запустить имеющуюся в нем программу:
hello
Hello, world!
Просмотреть установленные снапы можно командой snap list:
snap list
Name Version Rev Developer Notes
hello 2.10 20 canonical —
core 16.04.1 423 canonical —
Снап core — это базовая система снапов, среди всего прочего он как раз и содержит тот самый демон snapd, который вы установили ранее.
Как и пакеты, снапы можно обновить. Например:
sudo snap refresh hello
Данная команда обновит снап hello, если для него доступны обновления. Это очень удобно — вы обновляете не только приложения, но и все необходимые для его работы библиотеки.
Для обновления всех снапов используется другая команда:
sudo snap resresh
Теперь вы знаете, для чего используются снапы и что это вообще такое. А вот обновлять систему или использовать снапы — каждый решает сам.