Arch linux install snap

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

yay makepkg

Now that yay is installed, you can install snapd by:

yay install snapd

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

snap hello world 1

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

snapd manual install dependencies

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 

snapd manual install clone

Then make the snapd package:

Читайте также:  Репозитории kali linux rolling

Enter yes when it asks to install other dependency packages.

snapd manual install makepkg

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

enable snapd startup 2

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/имя_пакета .

Читайте также:  How to show all users in linux

Кроме того, создаются также юнит-файлы для каждого 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-пакетов.

Читайте также:  Astra linux журнал аудита

Помощь

Почтовая рассылка 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

Источник

Оцените статью
Adblock
detector