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

Snap ubuntu что это

  • автор:

Snap (Русский)

Состояние перевода: На этой странице представлен перевод статьи Snap. Дата последней синхронизации: 9 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Snap — это система развёртывания программного обеспечения и управления пакетами. Пакеты называются «snaps», а инструмент для их использования — «snapd», который работает в различных дистрибутивах Linux и, следовательно, позволяет развёртывать программное обеспечение, не зависящее от дистрибутива. Изначально система Snap была разработана и создана компанией Canonical.

snapd — это REST API демон для управления snap-пакетами. Пользователи могут взаимодействовать с ним с помощью клиента snap, входящего в состав этого же пакета.

Snap-пакеты могут быть ограничены с помощью AppArmor, который по умолчанию доступен в официальных ядрах. Шаги по включению AppArmor в системе описаны в соответствующих вики-статьях.

Установка

Совет: snapd устанавливает скрипт в /etc/profile.d/ для экспорта путей в исполняемым файлам, входящим в snap-пакеты. Для того чтобы эти изменения вступили в силу потребуется перезагрузка.

Если вы используете AppArmor, запустите и включите службы apparmor.service и snapd.apparmor.service .

Примечание: Если AppArmor не включен в вашей системе, то все snap-пакеты будут работать в режиме devel, то есть они будут иметь такой же неограниченный доступ к вашей системе, как и приложения, установленные из репозиториев Arch Linux.

Настройка

Чтобы демон snapd автоматически запускался, когда snap обращается к нему, запустите и/или включите юнит snapd.socket .

Использование

Для управления пакетами используется утилита snap.

Поиск

Для поиска пакетов, доступных для установки используйте команду find:

$ snap find критерий_поиска 

Установка пакетов

Установить snap-пакет можно с помощью команды:

# snap install имя_пакета 

Установка требует root привилегий. Установка с правами пользователя на данный момент невозможна. При установке snap загружается в /var/lib/snapd/snaps и монтируется в /var/lib/snapd/snap/имя_пакета .

Кроме того, создаются также юнит-файлы для каждого snap-пакета и добавляются в /etc/systemd/system/multi-user.target.wants/ , для того чтобы snap-пакеты монтировались при каждом запуске системы. Вы можете просмотреть список установленных пакетов командой:

$ snap list

Вы также можете устанавливать snap-пакеты локально, с жесткого диска:

# snap install --dangerous /путь/к/пакету/snap 

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

Для того чтобы обновить snap-пакеты выполните:

# snap refresh

Пакеты обновляются автоматически в соответствии с настройкой refresh.timer .

Посмотреть время последнего/следующего обновления можно с помощью команды:

# snap refresh --time

Изменение времени обновления, например, дважды в день:

# snap set core refresh.timer=0:00~24:00/2

Удаление пакетов

Для того чтобы удалить пакет выполните:

# snap remove snapname 

Советы и рекомендации

Классические snap-пакеты

Некоторые пакеты (например, Skype и Pycharm) используют классический уровень ограничения (classic confinement). Однако он требует наличия каталога /snap , который не соответствует FHS. Пакет snapd не поставляет этот каталог, но на его месте можно создать символическую ссылку на /var/lib/snapd/snap , чтобы установка классических snap-пакетов стала возможна:

# ln -s /var/lib/snapd/snap /snap

Ограничение доступа

При использовании AppArmor snapd сгенерирует такие же профили для snap-пакетов, что и на Ubuntu. Парсер AppArmor достаточно умён, чтобы отбросить правила, которые ещё не поддерживаются основным ядром.

Чтобы проверить, что базовое ограничение доступа работает, установите snap-пакет hello-world. Затем выполните следующее:

$ hello-world.evil
Hello Evil World! This example demonstrates the app confinement You should see a permission denied error next /snap/hello-world/27/bin/evil: 9: /snap/hello-world/27/bin/evil: cannot create /var/tmp/myevil.txt: Permission denied

AppArmor должен отказать в доступе и записать событие в журнал:

# dmesg
. [ +0.000003] audit: type=1327 audit(1540469583.966:257): proctitle=2F62696E2F7368002F736E61702F68656C6C6F2D776F726C642F32372F62696E2F6576696C [ +12.268939] audit: type=1400 audit(1540469596.236:258): apparmor="DENIED" operation="open" profile="snap.hello-world.evil" name="/var/tmp/myevil.txt" pid=10835 comm="evil" requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1000 [ +0.000006] audit: type=1300 audit(1540469596.236:258): arch=c000003e syscall=2 success=no exit=-13 a0=55d991ba6bc8 a1=241 a2=1b6 a3=55d991ba6be0 items=0 ppid=31349 pid=10835 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=3 comm="evil" exe="/bin/dash" subj==snap.hello-world.evil (enforce) .

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

# aa-status | grep snap.hello-world
snap.hello-world.env snap.hello-world.evil snap.hello-world.hello-world snap.hello-world.sh

Также можно проверить, какие функции песочницы доступны в системе согласно snapd:

$ snap debug sandbox-features
apparmor: kernel:caps kernel:domain kernel:file kernel:mount kernel:namespaces kernel:network_v8 kernel:policy kernel:ptrace kernel:query kernel:rlimit kernel:signal parser:unsafe policy:default support-level:partial confinement-options: devmode dbus: mediated-bus-access kmod: mediated-modprobe mount: freezer-cgroup-v1 layouts mount-namespace per-snap-persistency per-snap-profiles per-snap-updates per-snap-user-profiles stale-base-invalidation seccomp: bpf-argument-filtering kernel:allow kernel:errno kernel:kill_process kernel:kill_thread kernel:log kernel:trace kernel:trap

Решение проблем

Нечитабельный текст

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

# rm -f /var/cache/fontconfig/* $ rm -f ~/.cache/fontconfig/* # fc-cache -r -v

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

$ find ~/snap/ -wholename '*/.cache/fontconfig'
. /home/darth_vader/snap/mailspring/common/.cache/fontconfig . /home/darth_vader/snap/authy/common/.cache/fontconfig . /home/darth_vader/snap/icedrive/common/.cache/fontconfig . /home/darth_vader/snap/discord/common/.cache/fontconfig . /home/darth_vader/snap/bitwarden/common/.cache/fontconfig

Затем либо удалите их по отдельности, либо используйте этот простой цикл.

Наконец, перезапустите сеанс.

Error: cannot mount squashfs

Snap-пакеты используют файловую систему SquashFS. Если случается подобная ошибка:

error: system does not fully support snapd: cannot mount squashfs image using "squashfs"

проверьте, загружен ли модуль ядра SquashFS:

$ lsmod
Module Size Used by squashfs xxxxx x .

Совет: Если snapd был установлен только что — возможно, нужно перезагрузиться перед установкой snap-пакетов.

Помощь

Почтовая рассылка Arch Linux и другие официальные каналы поддержки Arch Linux не являются подходящим местом для запроса помощи по snap-пакетам на Arch Linux. Подходящим местом для запроса поддержки является Snapcraft forum.

Смотрите также

  • Официальный сайт
  • Репозиторий на GitHub
  • Статья на Ars Technica (2016-06) о том, что «Ubuntu snaps» становятся доступными для Arch и других дистрибутивов

Retrieved from «https://wiki.archlinux.org/index.php?title=Snap_(Русский)&oldid=751890»

Ubuntu snap – что это такое и с чем его едят?

Относительно недавно в Ubuntu появился новый инструмент — снапы (от англ. snap), но что это такое и как их использовать знают далеко не все пользователи.

Введение в снапы

Представим вполне реальную ситуацию. Пользователь устанавливает самую новую версию Ubuntu, пусть это будет версия 16.04 — именно в ней и появились впервые снапы по умолчанию. По определенным причинам пользователь отключает обновления. Такая ситуация не надумана. Мы все знаем, что после обновления системы Ubuntu, к сожалению, не всегда работает корректно и даже не всегда загружается.

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

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

Вторая ситуация. Пусть у пользователя самая новая версия дистрибутива (на данный момент — это 18.10) — чтобы никто не упрекнул нас в надуманности ситуации. Мы знаем, что у традиционных пакетов есть зависимости и конфликты. Иногда нельзя установить то или иное приложение, поскольку его библиотеки конфликтуют с библиотеками уже установленными в системе.

Обе проблемы настолько обширны, что разработчики Ubuntu изобрели снапы. Все мы знакомы с понятием пакета. Пакет содержит саму программу, а также различные вспомогательные файлы — документацию, ресурсы (картинки, например), файлы локализации, сценарии Но пакет не содержит всего, что нужно для работы этой программы в системе. Например, если программе для работы нужна библиотека GL, то просто в пакете «прописывается» зависимость — нужно установить пакет для работы этого пакета. При установке программы менеджер пакетов (apt) производит разрешение зависимостей — устанавливает все необходимые для работы этой программы пакеты.

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

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

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.

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

Записки 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-канал

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

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

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