Поиск по сайту:

Как работать с Snap-пакетами в Linux


Когда вы устанавливаете программные пакеты Linux с помощью snap, вы можете попрощаться с адом зависимостей и нарушением работы других работающих приложений. Пакеты Snap изначально были разработаны для Ubuntu, но теперь они доступны в различных дистрибутивах Linux.

Что такое Snap-пакеты?

В прошлом установка приложений в Linux была потенциально разочаровывающим занятием. Вы бы установили что-то только для того, чтобы обнаружить, что конкретная библиотека или другая зависимость отсутствовали или устарели. Затем вы выследите недостающий ресурс и установите его, только чтобы найти другое приложение, зависящее от версии библиотеки, которую вы только что заменили. Почини одно, сломай одно, повтори.

Это улучшилось благодаря более совершенным системам управления пакетами, таким как apt, dnf и pacman. Однако вы все равно столкнетесь с трудностями, если вам нужны разные версии одного и того же приложения. Или, если вы используете два приложения, которые конфликтуют, потому что они привязаны к определенным, но разным версиям библиотеки.

Одним из решений этих проблем являются системы упаковки и развертывания приложений. Snappy является одним из самых популярных из них. Он основан на системе упаковки и развертывания под названием Click, которая восходит к инициативе Ubuntu Touch. AppImage и FlatPak — это другие, с которыми вы могли столкнуться.

Эти системы инкапсулируют приложение вместе со всеми зависимостями и другими требованиями в один сжатый файл. Затем приложение запускается в своего рода мини-контейнере. Оно изолировано от других приложений. Библиотеки и другие ресурсы, с которыми приложение упаковано или которые требуются, доступны только ему одному.

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

Однако, если они не установлены обычным способом, как с ними обращаться? Итак, один файл пакета загружается, распаковывается и монтируется как виртуальная файловая система SquashFS. Затем он представляется вам как виртуальная среда. Все это происходит за кадром. Все, что вы будете знать, это то, что вы установили приложение и теперь у вас есть к нему доступ.

Конечно, поскольку каждый файл пакета должен содержать все ресурсы, необходимые приложению, файлы пакета могут быть большими. Также легко продублировать ресурс, который вы обычно устанавливаете только один раз, например MySQL или Apache. Если двум разным приложениям snap требуются одни и те же ресурсы, каждое из них создает собственную копию.

Однако это компромисс за простоту установки и устранение головной боли, связанной с конфликтом ресурсов.

Установка оснастки

Snappy был представлен в Ubuntu 16.04, поэтому, если вы используете эту или более позднюю версию, вы уже готовы к работе. На нашей машине Snappy был установлен на Manjaro 18.04, но нам пришлось установить его на Fedora 31.

snap — это и имя файлов пакета, и команда, которую вы используете для взаимодействия с ними. За кулисами демон snapd также является именем пакета, который вы должны установить, если на вашем компьютере еще нет Snappy.

Чтобы установить snapd в Fedora, введите следующую команду:

sudo dnf install snapd

Если вам нужно установить его на Manjaro, используйте эти команды:

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

Вы можете использовать команду snap version, чтобы увидеть версию клиента snap, демона snapd и номер серии программного обеспечения. Вам также будут показаны название и выпуск вашего дистрибутива Linux и версия ядра.

Введите следующее:

snap version

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

Установить пакет snap довольно просто. Вы можете использовать snap для поиска пакетов snap, а затем установить нужный.

Мы вводим следующее, чтобы найти и установить редактор изображений gimp:

snap find gimp

snap ищет совпадения с ключом поиска «gimp» и возвращает результаты. Он найдет все, что соответствует поисковому запросу или упоминает его.

Чтобы установить один из пакетов, мы используем значение из столбца Name, как показано ниже:

sudo snap install gimp

По мере загрузки процент завершения увеличивается, а индикатор выполнения ползет слева от окна терминала. Когда установка будет завершена, появится сообщение (как показано ниже), говорящее о том, что пакет был установлен.

Вы можете использовать команду df, чтобы проверить емкость и использование различных файловых систем, настроенных на вашем компьютере с Linux. Если мы передаем его вывод команде grep и ищем «gimp», мы изолируем запись только что установленного пакета.

Набираем следующее:

df | grep gimp

Это показывает нам, что пакет Snap был смонтирован, как если бы это была файловая система. Точка монтирования находится в каталоге snap здесь: /snap/gimp/252. «252» — это номер выпуска этой версии gimp.

Файловая система указана как: /dev/loop18. Файлы циклических устройств используются для того, чтобы сделать обычные файлы доступными в качестве блочных устройств. Обычно они используются для монтирования файловых систем в образах дисков. В данном случае они монтируют файловую систему SquashFS в пакете snap. «18» означает, что это 18-й файл устройства /dev/loop, используемый на этом компьютере с Linux.

Мы можем использовать команду df, чтобы быстро проверить это. Мы будем использовать параметр – t (тип), чтобы ограничить вывод только типами файлов SquashFS.

Набираем следующее:

df -t squashfs

Перечислены смонтированные файловые системы SquashFS. Файл устройства /dev/loop обрабатывает каждое из них, а всего их 18.

Каждая файловая система монтируется в каталог внутри каталога /snap. Однако это не означает, что на этом компьютере установлено 18 различных пакетов snap. Это дистрибутив Ubuntu, поэтому некоторые пакеты snap устанавливаются прямо из коробки, и мы только что установили еще один.

Кроме того, когда вы устанавливаете snapd, он устанавливает некоторые основные пакеты snap для удовлетворения потребностей других пакетов snap.

Мы можем использовать команду snap list, как показано ниже, чтобы получить список установленных пакетов snap:

snap list

Выходные данные были немного широкими, поэтому конец листинга показан ниже.

Вот весь список:

Name                 Version                    Rev   Tracking  Publisher    Notes
core                 16-2.43.3                  8689  stable    canonical*   core
core18               20200124                   1668  stable    canonical*   base
gimp                 2.10.18                    252   stable    snapcrafters -
gnome-3-26-1604      3.26.0.20191114            98    stable/...  canonical*   -
gnome-3-28-1804      3.28.0-16-g27c9498.27c9498 116   stable    canonical*   -
gnome-calculator     3.34.1+git1.d34dc842       544   stable/...  canonical*   -
gnome-characters     v3.32.1+git3.b9120df       399   stable/...  canonical*   -
gnome-logs           3.34.0                     81    stable/...  canonical*   -
gnome-system-monitor 3.32.1-3-g0ea89b4922       127   stable/...  canonical*   -
gtk-common-themes    0.1-28-g1503258            1440  stable/...  canonical*   -

Как видите, установлено 10 пакетов моментальных снимков, а не 18. Однако эти 10 пакетов дали начало 18 файловым системам SquashFS. Столбцы таблицы говорят сами за себя, но вот некоторые пояснения:

  • Имя: имя установленного пакета snap.
  • Версия: номер версии программного обеспечения в пакете snap.
  • Rev: номер версии пакета snap .
  • Отслеживание: канал, который этот пакет snap отслеживает на наличие обновлений. Есть четыре:
    • Стабильный: канал по умолчанию. Как следует из названия, этот канал содержит самые стабильные пакеты.
    • Кандидат. Этот канал менее стабилен, но очень близок к нему, потому что он содержит программное обеспечение уровня кандидата, которое является полным кодом. Он проходит окончательное тестирование, прежде чем будет переведен в стабильную версию.
    • Бета-версия. Качество этого канала находится на позднем этапе разработки, но его стабильность не гарантируется.
    • Edge: для первых тестировщиков сборки. Вы не должны использовать этот канал для важной работы или на рабочем компьютере. Вот драконы!

    Каналы привязки

    Вы можете использовать параметр info, чтобы получить описание пакета snap.

    Для этого набираем следующее:

    snap info gtk-common-themes

    Мы можем видеть, какой канал отслеживает пакет, и версию программного обеспечения в пакетах snap в каждом из четырех каналов. В большинстве случаев вам следует оставаться на стабильном канале.

    Пакет snap проверяет четыре раза в день, чтобы узнать, доступна ли более новая версия программного обеспечения на канале, который он просматривает или «отслеживает». Если вы хотите изменить канал, который отслеживает пакет snap, вы можете использовать параметры refresh и --channel.

    Для этого набираем следующее:

    sudo snap refresh gtk-common-themes --channel=beta

    Если бы была доступна более новая версия программного обеспечения, она была бы установлена, но здесь этого не произошло. Однако пакет snap теперь отслеживает бета-канал. Как только выходит новая бета-версия, она автоматически загружается и обновляется.

    Вы можете использовать параметр --list, чтобы проверить, доступны ли обновления для любого из пакетов snap, установленных на вашем компьютере.

    Для этого набираем следующее:

    sudo snap refresh --list

    Вам сообщат, содержат ли какие-либо каналы, отслеживаемые пакетами snap на вашем компьютере, более новые версии программного обеспечения.

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

    sudo snap refresh gtk-common-themes

    Удаление snap-пакета

    Чтобы удалить пакет snap, вы можете использовать опцию удаления, как показано ниже:

    sudo snap remove gimp

    Быстрая шпаргалка

    Использовать snap-пакеты довольно просто, но мы составили список некоторых команд, которые вам помогут:

    • Чтобы найти пакет: быстро найдите package_name
    • Чтобы установить пакет: sudo snap install package_name
    • Чтобы просмотреть все установленные пакеты: список привязки
    • Чтобы получить информацию об одном пакете: привязать информацию package_name
    • Чтобы изменить канал, который пакет отслеживает для обновлений: sudo snap refresh package_name --channel=channel_name
    • Чтобы узнать, готовы ли обновления для каких-либо установленных пакетов: sudo snap refresh --list
    • Чтобы обновить пакет вручную: sudo snap refresh package_name
    • Чтобы удалить пакет: sudo snap remove package_name

    RELATED: Best Linux Laptops for Developers and Enthusiasts