- How to Enable Snap Support in Arch Linux
- Method 1. Use an AUR helper to enable Snap
- Verify that snap works
- Method 2. Manually build the snap package from AUR
- Conclusion
- Snap (Русский)
- Установка
- Настройка
- Использование
- Поиск
- Установка пакетов
- Обновление пакетов
- Удаление пакетов
- Советы и рекомендации
- Классические snap-пакеты
- Ограничение доступа
- Решение проблем
- Нечитабельный текст
- Error: cannot mount squashfs
- Помощь
- Смотрите также
- ⏸ Как установить Snap на Arch Linux / Manjaro
- Установите Snap на Arch Linux / Manjaro
How to Enable Snap Support in Arch Linux
Snap is a universal package format designed by Canonical, the parent company of Ubuntu. Some people do not like Snap, but it has some advantages.
Often, some applications are only available in the Snap format. This gives you a good enough reason to enable snap in Arch Linux.
I know that AUR has a vast collection of applications but the snap apps often come directly from the developers.
If you want to be able to install Snap applications in Arch Linux, you need to enable snap support first.
There are two ways to do it:
- Enable Snap support using an AUR helper (easier)
- Enable Snap support manually by getting the packages from AUR
Method 1. Use an AUR helper to enable Snap
Snap is available in the Arch User Repository as the snapd package. You can install it easily using an AUR helper.
There are many AUR helpers out there, but yay is what I prefer because it has syntax similar to the pacman command.
If you don’t have an AUR installed already, install Yay using the command below (needs git beforehand):
git clone https://aur.archlinux.org/yay cd yay makepkg -si
Now that yay is installed, you can install snapd by:
Yay enables automatic updating of snapd whenever you update your Arch Linux system.
Verify that snap works
To test if snap works fine, install and run the hello-world snap package.
sudo snap install hello-world hello-world (or) sudo snap run hello-world
If it runs fine, then you can install other snap packages easily.
Method 2. Manually build the snap package from AUR
If you do not want to use an AUR helper, you can still get the snapd from the AUR. Let me show the detailed procedure.
You will need to install some build tools first.
sudo pacman -Sy git go go-tools python-docutils
Once you’re done with installing the dependencies, now you can clone the AUR directory, which goes as:
git clone https://aur.archlinux.org/snapd cd snapd
Then make the snapd package:
Enter yes when it asks to install other dependency packages.
You have installed the snapd daemon. However, it needs to be enabled to auto start at boot time.
sudo systemctl enable snapd --now sudo systemctl enable snapd.apparmor --now #start snap applications sudo ln -s /var/lib/snapd/snap /snap #optional: classic snap support
The major disadvantage of manually building a package is that you have to manually build every time a new update kicks in. Using an AUR helper solves that problem for us.
Conclusion
I prefer pacman and AUR in Arch Linux. It’s rare to see an application that is not in AUR but available in some other formats. Still, using snap could be advantageous in some conditions where you want it directly from the source, like installing Spotify on Arch for example.
I hope you find this tutorial helpful. Let me know if you have any questions.
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 на Arch Linux / Manjaro
В этом руководстве я расскажу вам, как установить и использовать сервис snapd в Arch Linux / Manjaro и других дистрибутивах Linux на основе Arch.
Snap – это инструмент для развертывания программного обеспечения и управления пакетами, изначально разработанный и созданный компанией Canonical, который работает в различных дистрибутивах Linux.
Установите Snap на Arch Linux / Manjaro
Чтобы установить Snapd в Arch Linux, вы можете использовать менеджер пакетов pacman или AUR.
Для AUR вам нужно установить помощник AUR.
В этом руководстве я рекомендую yay, который можно легко установить:
После установки yay используйте его для установки Snap.
yay -S --noconfirm --needed snapd
Вы можете сделать ту же установку с помощью yaourt.
Запустите и включите сервис Snapd.
sudo systemctl enable --now snapd.socket
Подтвердите статус сервиса.
$ systemctl status snapd.socket ● snapd.socket - Socket activation for snappy daemon Loaded: loaded (/usr/lib/systemd/system/snapd.socket; enabled; vendor preset: disabled) Active: active (listening) since Sat 2019-03-30 13:34:57 EAT; 1min 41s ago Listen: /run/snapd.socket (Stream) /run/snapd-snap.socket (Stream) Tasks: 0 (limit: 4915) Memory: 32.0K CGroup: /system.slice/snapd.socket Mar 30 13:34:57 arch.localhost systemd[1]: Starting Socket activation for snappy daemon. Mar 30 13:34:57 arch.localhost systemd[1]: Listening on Socket activation for snappy daemon.
Чтобы включить поддержку классического snap, создайте символическую ссылку между /var/lib/snapd/ snap и /snap:
sudo ln -s /var/lib/snapd/snap /snap
Поскольку бинарный файл находится в каталоге /snap/bin/, нам нужно добавить его в переменную $PATH.
echo "export PATH=\$PATH:\/snap/bin/" | sudo tee -a /etc/profile
Snapd теперь готов к использованию.
Вы взаимодействуете с ним с помощью команды snap.
Посмотрите страницу помощи команды:
Протестируйте свою систему, установив hello-world snap и убедитесь, что она работает правильно:
$ sudo snap install hello-world 2019-03-30T13:41:22+03:00 INFO Waiting for restart… hello-world 6.3 from Canonical✓ installed
Список установленных snaps
$ snap list Name Version Rev Tracking Publisher Notes core 16-2.38 6673 stable canonical✓ core hello-world 6.3 27 stable canonical✓ -
$ sudo snap remove hello-world hello-world removed