Snap – універсальні пакети програм та ігор. Як управляти ними в Linux?


Snap – універсальні пакети для будь-якого дистрибутиву Linux. Це найповніша інструкція як їх встановлювати, запускати та де брати програми та ігри в цьому форматі.

Навіщо взагалі потрібна ще одна система для установки програм?

Який би крутою та швидкою не була б ваша операційна система, все вирішує кількість написаного для неї ПЗ і легкістю його установки. Тому і був зроблений новий інструмент, який би полегшив би життя як розробників, так і користувачам.

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

На відміну від звичних deb-пакетів і rpm-пакетів, snap пакети несуть в собі всі залежності.
Тобто, коли ми встановлюємо deb-пакет або rpm-пакет, то передбачається, що всі залежності ми завантажуємо з підключених репозиторіїв системи.
Але існує величезна кількість всіляких дистрибутивів Linux, як і їх версій, і для розробника це величезна проблема випускати під весь цей зоопарк свій софт, а користувачеві часто доводиться самому розв’язувати проблему з відсутньою залежністю.

Файли Snap-пакетів, що мають розширення “.SNAP”, більше схожі на контейнери. Програмне забезпечення з цих пакетів є самодостатніми вже скомпільовані, містять всі бібліотеки, необхідні для їх функціонування, і виконуються в ізольованому захищеному оточенні. Вони встановлюються в окремі директорії і не конфліктують з основними компонентами системи. Тому все запрацює відразу в будь-якому дистрибутиві Linux який підтримує Snap.

Коли ви встановлюєте в систему додаток з Snap-пакета, то установка не впливає на інші пакети та програми. Тобто такий додаток працює у власному «програмному середовищі», але при цьому воно може взаємодіяти з іншими програмами в системі.

Переваги Snap:

  • Створюються один раз і для всіх підтримують платформ. Крім усього іншого, Snap-пакети містять всі залежності та бібліотеки, а це значить, що будь-яких проблем з запуском і використанням майже не буде
  • Підтримує автоматичне оновлення встановлених в системі Snap-пакетів
  • Один Snap для всього: дистрибутив Linux, сервер або хмара
  • Доступність різних версій: ви в будь-який момент можете перемикатися між стабільною, бета і навіть щоденними версіями будь-якого Snap-додатки
  • Безпека: Snap-додатки завжди запускаються в ізольованому середовищі у якій немає доступу до іншої частини вашого операційної системи
  • Система управління Snap-пакетами

Один з мінусів – це те, що snap пакети займають більше місця на диску, оскільки містять в собі всі залежності.

Встановлення підтримки Snap

Зараз підтримка Snap пакетів є в більшості дистрибутивів, але якщо з якої-небудь причини її у вас немає, то ви можете її додати.

Встановлення підтримки Snap в Ubuntu, Kubuntu, Lubuntu, Xubuntu, Debian, Linux Mint, Elementary OS, GalliumOS, Kali Linux, KDE Neon, Parrot Security OS, Pop!_OS, Raspbian, Zorin OS і подібних

У нових версіях Ubuntu підтримка Snap вже включена. Якщо це не так, то для установки Snap виконайте команду:

sudo apt update
sudo apt install snapd
systemctl enable --now snapd apparmor

Аналогічно виконується установка в Debian, Linux Mint, Elementary OS і інших Ubuntu/Debian-based дистрибутивах.

Встановлення підтримки Snap в Arch Linux

з GIT сховища

git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si

або з AUR сховища:

yaourt -S snapd

Далі необхідно його активувати:

sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в CentOS 7

sudo yum install epel-release
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в CentOS 8

sudo dnf install epel-release
sudo dnf upgrade
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в Fedora

sudo yum install kernel-modules
sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в Manjaro Linux

sudo pacman -S snapd
sudo systemctl enable --now snapd.socket

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в openSUSE

sudo zypper removerepo snappy
sudo zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.0 snappy
sudo zypper --gpg-auto-import-keys refresh
sudo zypper dup --from snappy
sudo zypper install snapd
sudo systemctl enable --now snapd
sudo systemctl enable --now snapd.apparmor

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в Red Hat Enterprise Linux (RHEL) 7

sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo subscription-manager repos --enable "rhel-*-optional-rpms" --enable "rhel-*-extras-rpms"
sudo yum update
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в Red Hat Enterprise Linux (RHEL) 8

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf upgrade
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Після цього необхідно перезавантажити систему.

Встановлення підтримки Snap в Solus

sudo eopkg up
sudo eopkg install snapd

Після цього необхідно перезавантажити систему.

Робота зі Snap-пакетами

Тепер розглянемо як же працювати з цими пакетами.

Перевірка працездатності snap в системі

Для початку необхідно перевірити її працездатність. Для цього виконаємо команду:

snap version

Якщо все добре, то ви побачите в консолі версію snap і snapd:

А якщо написати:

sudo snap

і двічі натиснути клавішу TAB (автодоповнення), то ми побачимо скільки ж команд у даного інструменту:

Зараз ми розглянемо найзагальніші та необхідні з них.

Для отримання списку всіх доступних Snap-пакетів слід відкрити вікно емулятора термінала і виконати наступну команду:

snap find

Якщо вам потрібно знайти певний пакет на ім’я, ви можете просто додати пошуковий запит після наведеної вище команди:

snap find <ім'я_пакета>

Шукати можна як по повній назві так і по його частині

snap find vl

А також шукати за описом, тому можна використовувати довільний запит. Якщо потрібно здійснити пошук по декілька слів, то треба укладати шукану фразу в лапки:

snap find "JetBrains IDE"

Встановлення пакетів

Для встановлення пакетів використовується команда snap install <ім'я_пакета>

snap install shout


Не забувайте про автодоповнення по клавіші Tab.

Автодоповнення працює і при написанні назви програми:

  • при одноразовому натисканні буде дописано повна назва додатка (якщо немає схожих);
  • при подвійному з’явиться список всіх доступних пакетів зі схожими назвами.

Після установки, ярлик встановленої програми можна знайти серед інших програм. Але дана функціональність може залежати від конкретної системи.

Типи пакетів

Є два типи snap пакетів:

  • Strict – більшість пакетів, які ізольовані від основної системи. Їм для доступу до системних ресурсів потрібен дозвіл. Про те як налаштувати дозвіл, буде трохи нижче в статті.
  • Classic – ці пакети отримують доступ до всіх ресурсів системи, тобто як звичайні системні пакети. При їх установці потрібний прапорець –classic.

Наприклад, багато IDE (інтегровані середовища розробки) є класичними snap пакетами.

Якщо ми спробуємо встановити IntelliJ IDEA звичайним способом:

snap install intellij-idea-community

то отримаємо помилку:

Видається попередження, що цей пакет є класичним і має доступ до всіх ресурсів системи, і якщо ми хочемо його встановити, то треба використовувати прапорець –classic.

Вказуємо прапорець і пробуємо установку:

snap install intellij-idea-community --classic

Тепер все ок:

Намагайтеся не встановлювати класичні snap пакети від неперевірених розробників (без галочки).

При пошуку в колонці Notes можна дізнатися, чи є snap пакет класичним:

Видалення пакетів

Для видалення пакетів використовується команда snap remove <ім'я_пакета>

snap remove gimp

Перегляд встановлених пакетів

Щоб переглянути список встановлених пакетів використовується команда:

snap list

Інформація про пакет

Для отримання інформації про будь-який пакет використовується команда snap info <ім'я_пакета>

snap info postman

Оновлення

Усі snap пакети автоматично оновлюються. Перевірка відбувається 4 рази на день, в цьому можна переконатися, виконавши наступну команду:

snap refresh --time

Оновлення всіх встановлених пакетів:

snap refresh

Оновлення одного пакета:

snap refresh gimp

Відновлення до попередньої версії snap-пакета (Відкат)

Якщо з якоїсь причини вам не сподобалося останнє оновлення snap-пакета, ви можете повернутися до попередньої версії за допомогою наступної команди:

snap revert

Така команда поверне необхідну версію snap-пакета і дані, що відповідають ПЗ. Якщо попередня версія snap-пакета отримана з іншого каналу, вона все одно встановиться, і канал залишиться колишнім.

snap revert gimp

Вимкнення або увімкнення snap пакетів

Якщо не хочете видаляти якісь додатки, але вони в цей момент вам не потрібні, то їх можна просто відключити. В цьому випадку пропаде ярлик програми та воно не буде оновлюватися. У будь-який момент можна буде його знову включити. Таким чином, нам не потрібно буде знову його завантажувати та встановлювати.

Щоб відключити будь-яке snap додаток, використовується наступна команда:

snap disable <ім'я_пакета>

Наприклад:

snap disable supertuxkart

У будь-який час можна включити snap пакет і зробити його знову доступним виконавши наступну команду в терміналі:

snap enable <ім'я_пакета>

Наприклад:

snap enable supertuxkart

Ось як це виглядає:

Перегляд останніх змін в пакеті

Виконайте наступну команду для перегляду списку змін стану системи. Вона виводить список Snap-пакетів, які ви недавно встановлювали, оновлювали та видаляли разом з мітками часу, відповідними кожної з цих операцій.

snap changes

Запуск встановленого пакета

Для запуску Snap-пакета можна використовувати команду snap run <ім'я_пакета>

snap run gimp

Також додатки, встановлені через Snap, можна запускати через головне меню вашого дистрибутиву або лаунчер. Але дана функціональність може залежати від конкретної системи.

Перелік запущених служб

Щоб переглянути всі встановлені і запущені “снепи” використовуйте:

snap services

Або подивитися статус конкретного пакета:

snap services lxd Service
Startup  Current lxd.daemon  enabled  active

Перезапуск, запуск і (тимчасове) зупинення snap-служб

Служби можна перезапустити за допомогою команди:

snap restart

Усі служби, необхідні для роботи Снепів, будуть перезавантажено за замовчуванням:

Перезавантаження конкретної служби:

snap restart lxd.daemon
Restarted.

Щоб зупинити запущену службу, використовуйте наступну команду:

snap stop lxd.daemon
Stopped.

Щоб запустити раніше зупинену службу, використовуйте наступну команду:

snap start lxd.daemon
Started.

Конфігурація перемінних snap-пакета

Деякі снепи, наприклад, що працюють у фоновому режимі, виставляють параметри конфігурації, які можна змінити.

Команди для перегляду і зміни цих параметрів конфігурацій - snap get и snap set.

Виставлені параметри конфігурації встановленого снепу можна подивитися за допомогою:

snap get <ім'я_пакета>

Щоб змінити параметри конфігурації, задайте команду «snap set»:

snap set <ім'я_пакета> key=value

Завантаження та установка snap-додатків OFFline

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

snap download <ім'я_пакета>

Ця команда завантажить .assert і .snap файл. Скопіюйте їх на іншу систему Linux, яка не має підключення до інтернету. Потім встановіть долучення за допомогою наступної команди:

snap ack <ім'я_пакета.assert>
snap install <ім'я_пакета.snap>

Магазини програм snap пакетів

Те, що можна управляти snap пакетами з термінала, це звичайно добре, але простому користувачеві Linux більше потрібні нормальні магазини програм. Наприклад, як GooglePlay на Android або як App Store на iOS.

Нумо подивімось, що може запропонувати нам Linux в плані магазинів для установки snap пакетів.

Snapcraft Store – веб версія магазину snap додатків

Даний магазин програм доступний за адресою: https://snapcraft.io/store
На жаль, поки немає локалізації, тобто, переведення на інші мови окрім англійської. Але може в майбутньому це буде виправлено.

Можна шукати в назві додатка, або просто переглядати за категоріями. На сторінці будь-якої програми, можна подивитися знімок екрана вікна програми, детальну інформацію.

Щоб встановити програму, потрібно натиснути кнопку Install:

Ви маєте можливість копіювати консольну команду установки даного snap пакета. Або (якщо у вас система Ubuntu) натиснути кнопку “View in Desktop store“, тоді буде відкритий “Менеджер програм Ubuntu”, в якому можна вже встановити обраний snap пакет:

Менеджер програм Ubuntu або Gnome Software

Для цього інструменту існує додатковий плагін, який дозволяє шукати, переглядати, встановлювати та видаляти snap пакети.
Для цього вам необхідно установити його:

sudo apt install gnome-software-plugin-snap

В Ubuntu 18.04 і вище нічого робити не потрібно додатково, все вже заздалегідь налаштовано за вас.

Просто відкриваємо і шукаємо додатки, наприклад, пошукаємо vlc:

В “Подробицях” можна побачити в “Джерело”, що додаток буде встановлено з Snap Store.

На вкладці “Встановлено” також будуть видні встановлені snap пакети:

Якщо перейти на сторінку встановленого додатка, можна не тільки “Запустити” і “Видалити”, а й

налаштувати дозвІли (Permissions) даного snap пакета:

Магазин Snappy / Snap Store

Погодьтеся, що попередні два магазини додатків не зовсім зручні:

  • У першому випадку ми просто побачимо консольну команду або відкриємо в Gnome Software (Менеджері програм Ubuntu).
  • У другому випадку потрібно оточення робочого столу Gnome і крім того, в ньому шукаються не тільки snap пакети, а все пакети додатків з усіх підключених сховищ..

Тому є Магазин Snappy, виключно для управління snap пакетами:

Встановити його можна за адресою: https://snapcraft.io/snap-store

або виконавши наступну команду в терміналі:

snap install snap-store

Після встановлення буде створено ярлик цієї програми.

Функціонал схожий на Менеджер додатків Ubuntu, тільки в цьому магазині немає інших пакетів, крім snap.

Висновок

Ми коротко розповіли про те, що являють собою Snap-пакети і як з ними працювати. Але це не єдині представники подібного типу пакетів в Linux. Також популярні пакети Flatpak.

А в цьому відео (хоча воно й англійською мовою, але все зрозуміло) все показано.

1540cookie-checkSnap – універсальні пакети програм та ігор. Як управляти ними в Linux?

Автор публікації

Офлайн 1 тиждень

UALinux

Ubuntu*Pack / ualinux.com
Коментарі: 1028Публікації: 954Реєстрація: 10-06-2016
Если Вам понравилась статья, то поделитесь ею в соц.сетях:
guest

11 комментариев
Самый новый
Самый старший Наибольшее количество голосов
Inline Feedbacks
View all comments

[…] Snap — универсальные пакеты программ и игр. Как управл… […]

Рафаэль

если я правильно понял, сайт скорее мертв, чем жив….. а жаль, ранее был хорош….

Boris

как снести все что относится к снапам нафиг включая и snapd в ubuntu ?

Boris

Чудово !!!
админ тыпочаще пишу как оптимизировать линуксы и сносить бредевые и не нужные проги
Например ну кому Нн-нада хрень под названием авахи кроме истеркив-маков

dmitriy.petruk

У меня на Elementary OS каждый примонтированный snap увеличивал время загрузки системы на пол секунды. Поставил 4 приложения – система загружается на 2 секунды медленнее. Поставил всё, что хотел -минус 17 секунд, и это на SSD. Удалил Snap с корнем из системы – всё работает как надо. Если есть задача – установить софт, который требует более новых зависимостей – то можно использовать Flatpak или AppImage. С ними подобных заморочек нет.… Читать далее »

Last edited 1 год назад by dmitriy.petruk
Максим

snap це звичайно класно, але в першу чергу для комерційного ПЗ. А от коли традиційне вже відкрите ПЗ починають пихати в snap… фуу. Це моя особиста думка. Але якось так стало, що розробники LinuxMint теж так думають. І відмовляються від підтримки цього в базовій поставці. Я завжди ставлю deb-пакет замість snap.

Денис

Ну хорошо а вот такой вопрос в desktop дистрибутиве имеем snap c установленным универсальным пакетом . Все работает всё здорово. Нашел я контейнер где это всё расположено и откуда всё это в своей изолированной от общей ос работает как из этого собрать полноценный rpm пакет ??? Или ничего не выйдет ?:так как я понимаю все это работает по виртуальной хост машиной на Ubunt`a ??

artem.fedorov

Где в каком repo искать Snap в Fedore 24 x 64 …..26 x 64 ?? и собственно сами сырцы
Мда ещё хотелось -бы короткий обзор про Snap для валенков так сказать 🙂 🙂