Snap — это универсальный пакет, который был разработан компанией Canonical (Ubuntu) и доступен для всех дистрибутивов Linux, поддерживающих snapd, включая Ubuntu, Debian, Linux Mint, Gentoo, Arch Linux, Fedora, OpenWrt, OpenEmbedded, Yocto, openSUSE, Manjaro и Solus. Кроме того, snap будет корректно работать в любом дистрибутиве Linux без необходимости каких-либо дополнительных модификаций, поскольку в него уже включены все необходимые зависимости.
Какова цель использования snap пакетов?
Традиционные подходы к управлению пакетами Linux, такие как APT или YUM, требуют специальной адаптации для каждого дистрибутива и увеличивают задержку между разработкой приложения и его развертыванием для конечных пользователей. Snap пакеты, с другой стороны, являются самодостаточными, в отличие от этих традиционных подходов.
Представьте себе на минуту обстоятельство, очень похожее на правду. Пользователь устанавливает последнюю версию Ubuntu - 22.04 LTS «Jammy Jellyfish».
Пользователь решает не получать обновления по какой-то неизвестной причине. Это не искусственно сфабрикованная ситуация. К сожалению, после обновления системы Ubuntu не всегда работает корректно и даже не всегда загружается. Это то, что хорошо известно всем нам.
Пользователь довольствуется дистрибутивом и некоторое время ненавязчиво им пользуется. По прошествии нескольких лет пользователь решает, что хочет обновить приложение, например, веб-браузер, до более новой версии, но не может этого сделать. В результате того, что его дистрибутив устарел. Проще говоря, ему нужны обновленные версии библиотек, и чтобы установить их, необходимо обновить уже установленные пакеты. Бывают случаи, когда процесс настолько обширен, что требуется обновление дистрибутива.
Кроме того, мы знаем, что пользователь не хочет выполнять это действие по разным причинам, а также потому, что это рискованно: система может стать бесполезной из-за разорванных связей, существующих между программами и библиотеками. Вторая ситуация. Дайте пользователю самую последнюю версию дистрибутива (на данный момент это 18.10), чтобы мы не несли ответственности за сфабрикованную ситуацию, которую мы создали.
Общеизвестно, что традиционные пакеты поставляются с рядом зависимостей и потенциальных конфликтов. Бывают случаи, когда невозможно установить приложение из-за несовместимости его библиотек с уже имеющимися в системе.
Поскольку обе эти проблемы так широко распространены, разработчики Ubuntu придумали snap пакеты. Идея пакета - это то, что известно каждому из нас. Программа и ее различные вспомогательные файлы, такие как документация, ресурсы (например, картинки), файлы локализации, скрипты и так далее, содержатся в пакете.
С другой стороны, пакет не всегда включает все компоненты, необходимые для нормальной работы программы в системе. Например, если программе требуется библиотека GL, она "записывает" в пакет зависимость, в которой говорится, что для правильной работы этого пакета необходимо установить такой-то пакет. В данном случае это библиотека GL.
Когда программа установлена, вопросы зависимости решаются менеджером пакетов (apt), который устанавливает все необходимые пакеты для правильной работы программы.
С другой стороны, этот метод занимает меньше места на диске. Он устраняет необходимость устанавливать одну и ту же библиотеку более одного раза в данной системе. С другой стороны, он приводит к проблемам, которые обсуждались ранее в этом параграфе. И пользователь, и разработчик приложений обнаружат, что snap пакеты устраняют все их проблемы с программным обеспечением.
Snap можно рассматривать как пакет, который включает не только саму программу, но и все библиотеки, необходимые для работы программы. Это означает, что файл snap содержит все, что необходимо для работы программы.
Ниже перечислены преимущества snap пакетов:
- snap пакеты просты в настройке, требуют только ввода одной команды в терминале или одного клика из магазина привязок;
- snap пакеты автоматически обновляются одновременно для всех дистрибутивов и устройств;
- поскольку snap пакеты не связаны ни с операционной системой, ни с другими приложениями, ни с аппаратными средствами, их использование полностью исключает риск;
- Нет причин опасаться, что система превратится в беспорядочную кашу, в которой будут сосуществовать как устаревшие, так и современные версии библиотек.
После загрузки привязки устанавливаются как образ, доступный только для чтения, в отдельную папку на вашем устройстве. Изменения, которые должны быть сделаны привязками в файловой системе (например, в каталоге /lib), будут сделаны в виртуальной файловой системе, а не в реальной. В результате установка привязок никак не повлияет на работу основной системы. Это хорошо подытоживает ситуацию. Все проблемы, которые возникали из-за несовместимости различных версий приложений, были устранены.
Как взаимодействовать с инструментом snap?
Прямо сейчас вы узнаете о пяти лучших шагах по установке команды Snap на Ubuntu. Snap фактически является клиентским инструментом для управления привязками в системах на базе Linux, который основан на терминале и взаимодействует с демоном snapd.
В большинстве случаев все привязки хранятся в централизованном хранилище, известном как Snap Store. Пользователи могут использовать команду snap для загрузки и установки привязок из Snap Store.
Установка Snap Command на Ubuntu: Конкретные шаги
Шаг 1: Предварительные условия
У вас уже должен быть установлен и запущен сервер Ubuntu. Для выполнения привилегированных команд вы должны иметь доступ sudo или root. Утилита apt-get должна быть установлена на вашем сервере.
Шаг 2. Обновление вашего сервера
Сначала используйте команду apt-get update, которая показана ниже, чтобы привести все установленные пакеты в актуальное состояние.
Шаг 3: Установите команду Snap
Следующим шагом должна стать установка утилиты snap, для чего следует использовать команду apt-get install snapd. При установке пакета snapd будут установлены клиентская утилита snap и демон snapd.
Шаг 4: Проверка версии snap
После успешного завершения установки команды snap вы можете проверить версию, которая была установлена, с помощью команды snap -version.
Шаг 5: Деинсталляция команды snap
Когда вы закончите использовать утилиту snap, у вас будет возможность удалить ее с помощью команды apt-get remove snapd.
Snap или apt: что и когда лучше применить?
Snap и apt кажутся сопоставимыми на первый взгляд, поскольку они оба позволяют управлять приложениями с помощью пакетов и позволяют устанавливать и удалять программное обеспечение с помощью простых команд. На самом деле, многие команды в snap и apt идентичны друг другу, например, команды install и remove.
В том, как упаковывается программное обеспечение, snap и apt отличаются друг от друга. Snap включает все необходимое для работы приложения, включая его зависимости, в один пакет, в то время как apt ожидает, что пользователи будут устанавливать зависимости в виде отдельных пакетов вместе с пакетом устанавливаемого приложения. Snap - это более современная альтернатива apt.
Это может показаться несущественным отличием, однако оно имеет несколько существенных последствий для работы программ snap и apt:
-
Различные итерации программного обеспечения
Из-за того, что Apt устанавливает программное обеспечение непосредственно в вашу систему, вы можете установить только одну версию каждого запущенного приложения. Несмотря на то, что существуют способы управления несовместимыми версиями приложений с помощью apt, этот процесс не является простым и понятным. При использовании snap установить несколько версий приложений на одну и ту же систему невероятно просто. -
Создание пакетов
Создавать пакеты snap проще, чем пакеты apt, благодаря тому, что зависимости можно включить в сам пакет, а не определять их и надеяться, что в операционной системе получателя уже установлены необходимые зависимости. - Удаление пакета Поскольку пакет snap содержит приложение вместе со всеми его данными и необходимыми зависимостями, приложение можно удалить целиком, просто удалив snap. При удалении приложения с помощью apt есть вероятность, что apt не удалит все связанные с ним данные, несмотря на то, что по умолчанию apt удаляет все данные, связанные с приложением. Это приведет к засорению системы ненужным хламом.
-
Безопасность
Хотя snap может работать без прав root, установка пакетов snap на вашу систему по умолчанию требует прав root. Это одна из причин, по которой snap считается более безопасным, чем другие форматы файлов. -
Debs требует привилегий root
Можно распаковать пакет Debian и запустить данные, используя учётную запись пользователя, не имеющего прав root; однако, пакеты разработаны не так, и это приведёт к множеству ошибок и проблем. В каждом из этих аспектов использование snap приводит к более рациональному и менее сложному управлению программным обеспечением.
С другой стороны, пакеты apt также имеют свои преимущества.
Начнем с того, что они более компактны благодаря тому, что не содержат никаких зависимостей. Когда вы устанавливаете программное обеспечение с помощью apt, вы лучше и эффективнее используете пространство для хранения данных. Поскольку пакеты приложений не нужно распаковывать перед запуском, приложения, установленные с помощью apt, скорее всего, будут запускаться быстрее. Это происходит потому, что пакеты приложений распаковываются в процессе установки.
Кроме того, apt — это старая система управления пакетами, которая все еще широко используется, и она обладает рядом преимуществ. На момент публикации данной статьи система apt ассоциируется в первую очередь с Ubuntu, однако она может работать и в других дистрибутивах, но не устанавливается в них по умолчанию. Рекомендуется использовать apt, если вашей целью является создание пакетов, совместимых с несколькими дистрибутивами Linux.
Заключение
Хотя Ubuntu — очень хорошая система, у нее есть некоторые недостатки в плане распространения программного обеспечения, несмотря на то, что технология доступна для решения широкого спектра проблем. В связи с этим она делает ставку на Snap как средство обеспечения совместимости одного пакета с несколькими дистрибутивами Linux. Несмотря на то, что технически это довольно трудоемкий процесс, он является чем-то, чем легко манипулировать пользователям. Теперь вы должны быть знакомы хотя бы с основами работы с snap на Ubuntu в результате прочтения этой статьи.