Как работать с 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
Linux Commands Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld RELATED: Best Linux Laptops for Developers and Enthusiasts