- Snap (Русский)
- Установка
- Настройка
- Использование
- Поиск
- Установка пакетов
- Обновление пакетов
- Удаление пакетов
- Советы и рекомендации
- Классические snap-пакеты
- Ограничение доступа
- Решение проблем
- Нечитабельный текст
- Error: cannot mount squashfs
- Помощь
- Смотрите также
- Установка и использование Snap на разных дистрибутивах Linux
- Как установить Snap на Linux
- Включение поддержки Snap в Debian и Ubuntu
- Включение поддержки Snap в дистрибутивах Fedora:
- Включение поддержки Snap в Arch-based дистрибутивах
- Включение поддержка Snap в дистрибутивах OpenSuse
- Основные команды Snap
- Поиск
- Установка Snap-пакета
- Список установленных Snap-приложений:
- Обновление Snap-пакета до последней версии
- Удаление Snap-приложения
- Выводы
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-пакеты локально, с жесткого диска:
# snap install --dangerous /путь/к/пакету/snap
Обновление пакетов
Для того чтобы обновить snap-пакеты выполните:
Пакеты обновляются автоматически в соответствии с настройкой refresh.timer .
Посмотреть время последнего/следующего обновления можно с помощью команды:
Изменение времени обновления, например, дважды в день:
# 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 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 должен отказать в доступе и записать событие в журнал:
. [ +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:
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 и других дистрибутивов
Установка и использование Snap на разных дистрибутивах Linux
Вкратце: Snap — это система управления и распределения пакетов, предоставляемая компанией Canonical (авторами Ubuntu). В этой статье мы рассмотрим как установить и использовать Snap на различных дистрибутивах Linux.
До сего момента вы уже могли слышать о Snap. Canonical описывает свою разработку как универсальный способ установки пакетов на любом дистрибутиве Linux.
Сами Snap-пакеты представляют собой заранее скомпилированные, вместе со всеми своими зависимостями и библиотеками, приложения, для которых, ко всему прочему, еще и существует своя собственная изолированная среда запуска. Они легче и быстрее устанавливаются, могут получать последние обновления, а также более безопасны, с точки зрения доступа к операционной системе и важным файлам.
Приложение может быть запаковано для любого дистрибутива Linux, сервера или облака в виде Snap. Разработчики более не должны испытывать боль и страдания, упаковывая свои программы для каждого отдельного дистрибутива Linux и прочих платформ, и именно по этой причине многие отдают предпочтение данному виду пакетов.
Преимущества Snap:
- Создаются один раз и для всех поддерживающих платформ. Помимо всего прочего, Snap-пакеты содержат все зависимости и библиотеки, а это значит, что каких-либо проблем с запуском и использованием почти не будет.
- Автоматически обновляются
- Один Snap для всего: дистрибутив Linux, сервер или облако.
- Доступность разных версий: вы в любой момент можете переключаться между стабильной, бета и даже ежедневной версиями любого Snap-приложения
- Безопасность: Snap-приложения всегда запускаются в изолированной среде у которой нет доступа к остальной части вашей операционной системы.
Как установить Snap на Linux
Перед установкой Snap-пакетов необходимо установить Snapd — среду управления, которая обрабатывает установку и обновления Snap-приложений в вашем дистрибутиве Linux.
Включение поддержки Snap в Debian и Ubuntu
Если вы хотите использовать Snap на Linux Mint и других дистрибутивах, основанных на Debian или Ubuntu, то используйте эту команду:
Включение поддержки Snap в дистрибутивах Fedora:
Включение поддержки Snap в Arch-based дистрибутивах
Spapd доступен в AUR. Используйте команды ниже, чтобы установить его оттуда.
yaourt -S snapd sudo systemctl enable --now snapd.socket
Включение поддержка Snap в дистрибутивах OpenSuse
Официально Snapd не включен в OpenSuse, с помощью команд ниже вы сможете установить его на Tumbleweed.
sudo zypper addrepo http://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_42.2/ snappy sudo zypper install snapd
Как только Snapd будет успешно установлен из репозиториев сообщества, не забудьте включить его с помощью команды:
sudo systemctl enable --now snapd.socket
Основные команды Snap
При работе с приложениями Snap вам необходимо будет запомнить несколько команд, которые будут помогать вам выполнить различные (иногда весьма важные) действия.
Поиск
Рано или поздно вы захотите найти какое-нибудь приложение, а если быть точнее, Snap-версию этого приложения. Следующая команда поможет вам в этом:
sudo snap find libreoffice
Установка Snap-пакета
После того, как вы найдете нужную программу, вам необходимо будет ее установить. Для этого надо ввести эту команду:
sudo snap install (snap_name)
Список установленных Snap-приложений:
Далее вы сможете найти ее в этом списке:
Обновление Snap-пакета до последней версии
Приложения Snap обновляются автоматически, однако если это по каким-то причинам не произошло, вы можете использовать эту команду:
sudo snap refresh (snap_name)
Удаление Snap-приложения
Чтобы удалить приложение Snap используйте следующую команду:
sudo snap remove (snap_name)
Выводы
В различных дистрибутивах Linux нет единого способа установки приложений. Разработчикам приходится собирать разные пакеты для каждого отдельного семейства дистрибутивов, что отнимает у них больше времени и сил. Snap мог бы стать отличным решением этой, и еще ряда других (связанных с отсутствием зависимостей и библиотек) проблем.