Snap ubuntu что это
Перейти к содержимому

Snap ubuntu что это

  • автор:

Записки IT специалиста

Snap — это универсальный формат пакетов, созданный компанией Canonical первоначально для Ubuntu, но получивший широкое распространение и в других дистрибутивах. Главной особенностью snap-пакетов является их самодостаточность, они содержат как нужное приложение, так и все основные зависимости к нему, что ускоряет распространение приложений и снижает возможные конфликты с другим ПО. В этой статье мы опишем основные приемы работы со snap для системного администратора и некоторые неочевидные особенности этой системы управления пакетами.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

К сожалению, многие администраторы, как начинающие, так и опытные крайне негативно относятся к snap, доходя до того, что сразу же удаляют его из системы. При этом разумной аргументации этих действий ими не предоставляется. На наш взгляд — это непрофессиональный подход, хороший специалист не ставит искусственных ограничений для применяемых технологий и умеет играть от сильных сторон, нивелируя слабые.

Перед тем, как рассматривать работу со snap мы сделаем краткое отступление и рассмотрим причины, приведшие к появлению snap и аналогичных ему форматов, таких как flatpak или appimage. Традиционно софт в Linux распространяется по принципу конструктора, когда все зависимости приложения являются отдельными пакетами или библиотеками и распространяются отдельно. Таким образом, если библиотека нужна сразу нескольким приложениям, то нам достаточно скачать ее один раз и установить в систему. Если в библиотеке найдены ошибки, то достаточно быстро их исправить и выпустить обновление, авторам программ, которые используют эту библиотеку ничего дополнительно делать не надо.

Для централизованного управления ПО каждый дистрибутив имеет собственный репозиторий, который содержит базу пакетов, собранных именно для этой версии дистрибутива, проверенных на ошибки и является единым доверенным источником программ для системы. И вот здесь появляются первые сложности. Количество даже основных дистрибутивов весьма велико, потому как у каждого из них на поддержке находятся сразу несколько выпусков, с разным составом базовой системы. Поэтому разработчик ПО как правило не собирает бинарные пакеты, этим занимаются мейнтрейнеры дистрибутиовов, что вызывает определенные задержки между выходом нового релиза программы и ее появления в репозитории.

Но это еще не все. В промышленном применении используются дистрибутивы с долгосрочной поддержкой (LTS), которые гарантируют неизменность основной пакетной базы на протяжении всего срока поддержки, а следовательно, многие библиотеки к концу жизненного цикла успеют порядочно устареть. Это хорошо для промышленного ПО и серьезных бизнес-систем, которые получают стабильное и предсказуемое окружение на заранее определенный период времени. Но это плохо для пользовательского ПО, особенно связанного с такими быстро развивающимися областями как интернет, мессенджеры, мультимедиа.

Классическая ситуация, когда разработчик для внедрения каких-то новых возможностей использует новую версию библиотеки, которая входит в конфликт с библиотеками LTS-версий дистрибутивов. В этом случае ожидать появления новых версий программы в официальных репозиториях скорее всего не стоит. Установка из сторонних источников, включая сторонние репозитории, PPA и просто пакеты, всегда связана с риском и потенциальным нарушением стабильности системы.

Snap и альтернативные ему технологии позволяют самому разработчику один раз выпустить универсальный пакет, который будет одинаково подходить для всех поддерживаемых систем. Это сразу снимает вопросы по скорости доставки ПО — пользователь может всегда использовать последнюю версию пакета, снимает риски нарушения безопасности и стабильности системы — все snap-приложения запускаются внутри изолированной от системы песочницы.

Кроме того, snap позволяет решить еще одну неочевидную проблему — поддержание единообразия ПО на предприятии. Если у вас в эксплуатации находятся разные выпуски дистрибутивов, то версии предлагаемого ими софта будут отличаться, что создает определенные трудности в сопровождении и поддержке. Snap позволяет применять единые версии ПО вне зависимости от используемого дистрибутива.

Установка и базовое использование snap

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

  • Ubuntu и официальные разновидности от 18.04 и новее
  • Manjaro
  • KDE Neon
  • Solus 3 и новее
  • Zorin OS

Для остальных дистрибутивов в большинстве случаев просто достаточно установить пакет snapd, но мы советуем все равно обратиться к инструкциям на официальной странице или к документации дистрибутива. Мы, традиционно будем рассматривать DEB-системы. Все указанные ниже команды выполняются из-под учетной записи суперпользователя (root) или через sudo.

Для установки snap выполните:

apt install snapd

После чего запустите службу и проверьте ее статус.

systemctl start snapd
systemctl status snapd

snap-getting-started-001.png

В Debian также рекомендуется сразу установить базовый пакет core:

snap install core

Базовые пакеты core представляют собой набор основных системных библиотек, общих для всех приложений, что позволяет уменьшить размер snap-файлов за счет использования библиотек из базового пакета. Пакет core соответствует среде выполнения Ubuntu 16.04, если приложению нужен иной набор библиотек, то можно использовать пакеты core18, core20 и core22, каждый из которых соответствует определенному LTS-выпуску. Но вам особо не нужно об этом беспокоиться, так как данные пакеты будут автоматически установлены по зависимостям. Также существует ряд других общих пакетов, представляющие наборы общих библиотек для определенных сред и окружений, например, gnome-3-38-2004 или gtk-common-themes. Такой подход позволяет избежать ненужного дублирования. оставляя в snap-пакетах только действительно необходимые компоненты.

Хорошо, но откуда брать пакеты? Можно воспользоваться сайтом snapcraft.io, а можно просто выполнить поиск в консоли, синтаксис команд snap сильно напоминает синтаксис apt, поэтому долго привыкать не придется. Например, поищем Телеграм:

snap find telegream

Однако не будет ничего страшного, если вы по привычке наберете:

snap search telegream

Результат будет один и тот же. Искать можно не только по названию пакета, но и по части описания, если запрос содержит пробелы — его следует обернуть в кавычки.

snap-getting-started-002.png

Обратите внимание, что в snap находится практически последняя актуальная версия приложения, тогда как в репозитории самого последнего LTS-выпуска 22.04 только 3.6.1 от 16.03.22. Если вы активно используете данный мессенджер (как и любое другое приложение) то такое расхождение в версиях будет достаточно критичным и выступит сильным аргументом к использованию snap.

Как мы уже видели выше, для установки snap пакета нужно использовать команду install с именем пакета:

snap install telegram-desktop

Посмотреть на список установленных snap можно командой:

snap list

Здесь мы видим все установленные пакеты, в т.ч. и базовые наборы библиотек, которые были установлены по зависимостям, версию пакета и его издателя, доверенные издатели помечаются зеленой галочкой.

snap-getting-started-003.png

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

Для удаления пакета используйте:

snap remove telegram-desktop

Если вы не хотите ждать окончания процесса удаления и хотите сразу вернуться в консоль, оставив процесс работать в фоне, используйте:

snap remove telegram-desktop --no-wait

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

snap remove telegram-desktop --purge

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

snap disable telegram-desktop

Для включения выполните обратную команду:

snap enable telegram-desktop

Опытные пользователи могут заметить, что мы ничего не сказали про обновление snap-пакетов, так вот — это не нужно, обновление всех установленных пакетов выполняется полностью в автоматическом режиме.

Обновление и откат snap-пакетов

Как уже было сказано выше snap-пакеты обновляются полностью автоматически, в фоновом режиме. Данный подход не нов, он широко используется в мобильных системах, магазине Microsoft и позволяет прозрачно для пользователя доставлять ему свежие версии ПО и исправления. Но при этом администратор имеет возможность контролировать процесс обновления и управлять им.

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

snap refresh

Чтобы обновить только отдельный пакет просто укажите его имя:

snap refresh telegram-desktop

Проверить периодичность обновления можно командой:

snap refresh --time

Там же вы увидите время последнего запуска и следующее планируемое время, по умолчанию значение таймера представлена 00:00~24:00/4, что обозначает один раз в 6 часов. Посмотреть планируемые к обновлению пакеты вы можете командой:

snap refresh --list

snap-getting-started-004.png

Следующий актуальный вопрос: что делать, если что-то пошло не так? В этом случае вы всегда можете откатиться на предыдущую версию пакета, для этого используйте:

snap revert telegram-desktop

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

Посмотреть список доступных версий можно командой:

snap list --all 

или для отдельного пакета:

snap list --all telegram-desktop

По умолчанию хранится две версии пакета: установленная и предыдущая.

snap-getting-started-005.png

Теперь о том, какими параметрами мы можем управлять. В первую очередь расписанием, например, мы хотим обновлять пакеты в понедельник с 10 до 12 часов утра:

snap set system refresh.timer=mon,10:00~12:00

Для указания расписания следует использовать формат Timer string format.

При необходимости мы можем приостановить обновление пакетов на срок не более 90 дней. Допустим мы хотим отложить обновления до 22 декабря 2022 года. Сначала получим строку даты в нужном формате:

date --date="2022-12-22" +%Y-%m-%dT%H:%M:%S%:z

Затем подставим полученное значение в команду:

snap set system refresh.hold=2022-12-22T00:00:00+03:00

Еще одна полезная опция позволяет запретить обновление на лимитных подключениях, если NetworkManager видит, что вы подключены к тарифицируемому соединению, то обновление производиться не будет:

snap set system refresh.metered=hold

Также мы можем увеличить количество хранимых версий пакета, что позволит выполнить многократный откат:

snap set system refresh.retain=3

Как видим, snap предоставляет удобные инструменты по управлению обновлением пактов и предоставляет возможность быстрого отката, но это еще не все.

Каналы snap-пакетов

Каналы — важная часть концепции snap, позволяя выбирать различные ветви развития продукта и обновляться в их рамках. Каждый канал состоит из трех частей:

  • Tracks — выпуски (треки) — позволяют разработчикам публиковать несколько выпусков своего продукта под одним именем
  • Risk-levels — уровни риска — предоставляют несколько вариантов выбора между стабильностью и новыми функциями
  • Branches — ветви — необязательная часть канала, предназначены для временных выпусков, исправляющих ошибки.

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

  • stable — стабильные выпуски, рекомендуемые к применению в производственных средах.
  • candidate — выпуски, готовые к переходу в стабильное состояние, но требующие дополнительного тестирования
  • beta — бета версии продукта для тестирования вне производственных сред
  • edge — выпуски в процессе разработки, представляют собой постоянный поток изменений без обеспечения качества кода

Для того, чтобы проверить какие каналы есть у интересующего вас пакета выполните:

snap info firefox

И в самом внизу вывода изучите блок channels.

snap-getting-started-006.png

Как можем увидеть, доступны два выпуска: latest и esr, каждый со своими уровнями риска. В поле tracking указан текущий канал — latest/stable, а в поле installed — установленная версия, если, конечно, пакет установлен.

Допустим, мы хотим переключиться на стабильную версию esr — нет ничего проще:

snap switch --channel=esr/stable firefox

Затем просто обновите пакет:

snap refresh firefox

Также можно совместить все в одну команду:

snap refresh --channel=esr/stable firefox

Если вы хотите переключить уровни риска в пределах одного выпуска, то просто укажите:

snap refresh --channel=candidate firefox

Также ключ —channel можно использовать и при установке пакета, чтобы сразу указать необходимый выпуск, например:

snap install --channel=esr/stable firefox

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

Мгновенные снимки данных

Любой пакет — это не только сама программа, но и пользовательские данные: профили, настройки, аккаунты. Все это требуется время от времени сохранять и snap снова предоставляет удобные инструменты для этого. Чтобы сделать моментальный снимок пользовательских данных всех установленных пакетов выполните:

snap save

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

snap save telegram-desktop

Посмотреть имеющиеся снимки можно командой:

snap saved

snap-getting-started-007.png

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

snap restore 2

Это удобно, так как позволяет быстро восстановить как состояние отдельного пакета, так и всей системы.

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

snap export-snapshot 3 my-snapshot.data

Для импорта просто укажите необходимый файл:

snap import-snapshot my-snapshot.data

Чтобы удалить снимок выполните:

snap forget 3

Снимки можно делать автоматически, для этого выполните команду:

set system snapshots.automatic.retention=48h

Что обеспечит автоматическое создание снимков раз в двое суток, промежуток времени между снимками не должен быть менее 24 часов.

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

set system snapshots.automatic.retention=no

Все снимки хранятся 31 день, после чего автоматически удаляются.

Управление интерфейсами

Каждый snap-пакет запускается и работает в изолированном окружении, для взаимодействия с объектами за пределами контейнера используются интерфейсы, которые разрешают или запрещают соединения с определенными ресурсами. Это может быть оборудование, звук, сеть, домашняя директория пользователя и т.д. В большинстве случаев пользователю не требуется настраивать интерфейсы, все привязки происходят автоматически. Но администраторам нужно иметь представление и базовые навыки работы с ними.

Давайте посмотрим соединения пакета, для примера возьмем firefox:

snap connections firefoх

А теперь внимательно рассмотрим скриншот ниже, на котором мы видим три основных колонки:

  • Interface — интерфейс — это соединение с каким-либо ресурсом или службой
  • Plug — коннектор (штекер) — это подключение со стороны пакета, который хочет получить доступ к ресурсу, должен быть подключен к слоту (гнезду) службы
  • Slot — слот (гнездо) — подключение со стороны ресурса или службы, к которому должен быть подключен коннектор, предоставляется службой snapd или базовыми пакетами core

snap-getting-started-008.png

Таким образом интерфейс — это соединение между коннектором и слотом, которое может быть как установлено, так и разорвано. Зная имя интерфейса, мы всегда можем узнать как он используются, какие пакеты имеют коннекторы и кто предоставляет слот:

snap interface camera

В выводе команды мы увидим, что коннекторы к интерфейсу имеют пакеты firefox и telegram-desktop, а слот предоставляет служба snapd.

snap-getting-started-009.png

Теперь допустим. что мы не хотим чтобы браузер имел доступ к камере, все что нам нужно — это просто отключить интерфейс:

snap disconnect firefox:camera :camera

Команда предписывает отключить коннектор firefox:camera от слота :camera, имена слотов и коннекторов указываем точно также как в выводе команды connections. Отключенный вручную интерфейс автоматически назад не подключается.

Иногда бывает задача отключить интерфейс временно, до обновления пакета. Например, он некорректно работает с камерой, но откатывать его по каким-либо причинам вы не хотите. Тогда используйте дополнительный ключ —forget, который отключит интерфейс только до обновления:

snap disconnect firefox:camera :camera --forget

Еще раз проверим соединения, как видим в слоте камеры стоит прочерк, значит коннектор отключен и пакет не имеет доступа к этому интерфейсу.

snap-getting-started-010.png

Для включения интерфейса воспользуйтесь командой:

snap connect firefox:camera :camera

Данный механизм дает администратору простой, удобный и, снова повторимся, безопасный способ управления разрешениями приложений. Вам не нужно вникать в дебри назначения прав и ограничений, достаточно просто соединить или разъединить интерфейс.

Заключение

В данной статье мы рассмотрели базовые принципы работы со snap, при этом многие моменты остались за кадром, так как формат статьи не позволяет сильно углубляться в вопрос. Но приведенных данных вполне достаточно, чтобы начать уверенно использовать данную технологию. При этом лично вы можете использовать или не использовать snap в своей деятельности, но как специалист должны иметь базовый набор знаний и основных навыков для работы со snap-пакетами. Кроме того, имея собственный опыт, вы сможете аргументировать свою позицию по отношению использования snap в том или ином сценарии.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Ubuntu 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 в результате прочтения этой статьи.

Snap-пакеты в Linux. Что это и как с ними работать

Snap пакеты

Пакетная система 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.

Snap: что это такое и как его установить на Linux

FileEnergyCom

Если вы пользуетесь Linux, то наверняка знаете, что для установки программ на эту операционную систему существуют разные форматы пакетов. Например, на Ubuntu вы можете использовать apt или dpkg для установки deb-пакетов, на Fedora — dnf или rpm для установки rpm-пакетов. Каждый из этих форматов имеет свои преимущества и недостатки, но все они обладают одной общей проблемой — зависимостями.

Зависимости — это дополнительные библиотеки или компоненты, которые необходимы для работы программы. Если вы хотите установить программу из пакета, то вам нужно также установить все ее зависимости. Это может быть не так просто, потому что разные программы могут требовать разные версии одних и тех же библиотек. Кроме того, зависимости могут конфликтовать друг с другом или с системой, вызывая ошибки или нестабильность.

Чтобы решить эту проблему, в 2016 году компания Canonical, разработчик Ubuntu, представила новый формат пакетов для Linux — snap. Snap-пакеты — это контейнеризованные приложения, которые включают в себя все необходимые зависимости и работают изолированно от системы. Snap-пакеты можно устанавливать и обновлять на любом дистрибутиве Linux, поддерживающем snapd, не беспокоясь о совместимости или безопасности.

В этой статье мы расскажем вам подробнее о snap-пакетах, их особенностях, преимуществах и способах установки.

Компоненты snap-экосистемы

Существует пять основных компонентов в snap-экосистеме:

Snapd: это демон snap, который работает в фоновом режиме и управляет snap-пакетами на Linux-системе. Он отвечает за установку, обновление, удаление и запуск snap-пакетов, а также за настройку разрешений и конфигурации для них.

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

Каналы: это способ определения, какая версия snap-пакета будет установлена и проверена на обновления. Каждый snap-пакет может иметь несколько каналов, например stable, candidate, beta или edge. Канал stable содержит самую стабильную и проверенную версию пакета, а канал edge — самую свежую и экспериментальную. Вы можете выбирать канал при установке или переключаться между ними в любое время.

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

Snapcraft: это инструмент для разработки и публикации snap-пакетов. С его помощью вы можете легко создать свой собственный snap-пакет из существующего приложения или написать новое с нуля. Snapcraft поддерживает разные языки программирования и фреймворки, такие как Python, Java, Go, Node.js и т.д.

Преимущества snap-пакетов

Snap-пакеты имеют ряд преимуществ перед традиционными пакетами для Linux:

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

Изоляция: snap-пакеты работают изолированно от системы и других приложений. Они не зависят от системных библиотек или компонентов, а содержат все необходимые зависимости внутри себя. Это означает, что вы можете устанавливать разные версии одного и того же приложения или разные приложения, использующие одни и те же библиотеки, без конфликтов или ошибок. Кроме того, snap-пакеты имеют ограниченный доступ к системным ресурсам, таким как файлы, сеть, аудио и т.д. Вы можете контролировать, какие разрешения выдаются snap-пакетам, и изменять их по своему усмотрению.

Одинаковое поведение на разных дистрибутивах: snap-пакеты работают одинаково на любом дистрибутиве Linux, поддерживающем snapd. Вы не нуждаетесь в специальных адаптациях или настройках для разных версий или вариантов Linux. Вы можете быть уверены, что ваше приложение будет работать так же, как вы ожидаете, на любом устройстве с Linux.

Удобство разработки и публикации: snap-пакеты легко создавать и публиковать с помощью инструмента Snapcraft. Вы можете использовать разные языки программирования и фреймворки для разработки своего приложения и упаковывать его в snap-пакет с минимальными изменениями. Вы можете также легко тестировать и отлаживать свое приложение в разных каналах и на разных дистрибутивах. Вы можете публиковать свое приложение в Snap Store, где оно будет доступно для миллионов пользователей Linux.

Недостатки snap-пакетов

Snap-пакеты также имеют некоторые недостатки, которые нужно учитывать:

Большой размер: snap-пакеты имеют больший размер, чем традиционные пакеты для Linux, потому что они содержат все зависимости внутри себя. Это может занимать больше места на диске и потреблять больше трафика при загрузке или обновлении.

Медленная скорость запуска: snap-пакеты запускаются медленнее, чем традиционные пакеты для Linux, потому что они требуют дополнительного времени для монтирования и проверки целостности. Это может быть заметно при запуске сложных или ресурсоемких приложений.

Ограниченный доступ к системным ресурсам: snap-пакеты имеют ограниченный доступ к системным ресурсам, таким как файлы, сеть, аудио и т.д. Это повышает безопасность и изоляцию, но также может приводить к проблемам с функциональностью или интеграцией с другими приложениями. Например, некоторые snap-пакеты могут не иметь доступа к вашему домашнему каталогу или к вашему принтеру. Вы можете изменять разрешения для snap-пакетов, но это может повысить риск нарушения безопасности или стабильности.

Возможные проблемы совместимости: snap-пакеты могут вызывать проблемы совместимости с некоторыми системными компонентами или другими приложениями. Например, некоторые snap-пакеты могут не работать правильно с AppArmor или SELinux, системами безопасности Linux. Также некоторые snap-пакеты могут не поддерживать темы или иконки, используемые в вашем рабочем окружении.

Способы установки snap-пакетов

Существует два основных способа установки snap-пакетов на Linux: через командную строку или через графический интерфейс Snap Store.

Чтобы установить snap-пакет через командную строку, вам нужно сначала убедиться, что на вашей системе установлен и запущен демон snapd. Snapd уже предустановлен и готов к работе на следующих дистрибутивах:

Ubuntu
Linux Mint
Debian
Fedora
Solus
Zorin OS

Для других дистрибутивов вам нужно установить snapd вручную, следуя инструкциям на этой странице.

После того, как вы установили и запустили snapd, вы можете использовать команду snap для установки и управления snap-пакетами.

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

sudo snap install hello-world

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

snap run hello-world
# или
hello-world

Чтобы обновить все установленные snap-пакеты, вы можете использовать команду snap refresh:

sudo snap refresh

Чтобы удалить snap-пакет, вы можете использовать команду snap remove:

sudo snap remove hello-world

Чтобы посмотреть список всех установленных snap-пакетов, вы можете использовать команду snap list:

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

Чтобы получить больше информации о конкретном snap-пакете, вы можете использовать команду snap info:

Чтобы изменить разрешения или конфигурацию для конкретного snap-пакета, вы можете использовать команды snap connect, snap disconnect или snap set:

Для более подробной информации о командах и опциях snap вы можете использовать команду snap help или посмотреть эту страницу.

Чтобы установить snap-пакет через графический интерфейс Snap Store, вам также нужно сначала убедиться, что на вашей системе установлен и запущен демон snapd.

Затем вам нужно установить приложение Snap Store, если оно еще не установлено на вашей системе. Вы можете скачать его из этой страницы или выполнить следующую команду:

sudo snap install snap-store

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

Чтобы установить snap-пакет из Snap Store, вам нужно найти его по имени или ключевому слову в поисковой строке или выбрать его из списка рекомендованных или популярных пакетов. Затем вам нужно нажать на кнопку Установить и ввести свой пароль, если потребуется. После того, как установка завершится, вы можете запустить snap-пакет из меню или панели задач вашего рабочего окружения.

Чтобы обновить все установленные snap-пакеты из Snap Store, вам нужно нажать на значок обновления в правом верхнем углу экрана и подождать, пока все обновления будут загружены и установлены. Вы также можете обновлять отдельные snap-пакеты, выбирая их из списка установленных приложений и нажимая на кнопку Обновить.

Чтобы удалить snap-пакет из Snap Store, вам нужно выбрать его из списка установленных приложений и нажать на кнопку Удалить. Затем вам нужно подтвердить свое действие и ввести свой пароль, если потребуется.

Чтобы получить больше информации о конкретном snap-пакете из Snap Store, вам нужно выбрать его из списка доступных или установленных приложений и нажать на его название или значок. Вы увидите подробную страницу snap-пакета, где вы можете прочитать описание, отзывы, разрешения и другие детали.

В этой статье мы рассказали вам о snap-пакетах — новом формате пакетов для Linux, который предлагает ряд преимуществ по сравнению с традиционными пакетами. Snap-пакеты обеспечивают автоматическое обновление, изоляцию, одинаковое поведение на разных дистрибутивах и удобство разработки и публикации приложений для Linux.

Однако snap-пакеты также имеют некоторые недостатки, такие как большой размер, медленная скорость запуска, ограниченный доступ к системным ресурсам и возможные проблемы совместимости.

Если вы хотите попробовать snap-пакеты на своей Linux-системе, вы можете легко установить их через командную строку или через графический интерфейс Snap Store. Вы можете найти тысячи snap-пакетов разных категорий и жанров в Snap Store или создать свой собственный snap-пакет с помощью инструмента Snapcraft.

Мы надеемся, что эта статья была полезна и интересна для вас.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *