It’s FOSS: Обновление snap-пакетов в дистрибутивах из семейства Ubuntu

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

Обновление snap-пакетов в дистрибутивах из семейства Ubuntu

Snap-пакеты – неотъемлемая часть дистрибутивов из семейства Ubuntu. Вы, конечно, можете удалить из системы абсолютно все найденные в ней snap-пакеты, но по факту snap – это основа, вокруг которой сейчас и строится Ubuntu.

Когда дело доходит до обновления системы, опытные линуксоиды по привычке используют команды apt update и apt upgrade. И ещё несколько лет назад это бы сработало, но сейчас, когда в системе всё больше snap-пакетов, привычных команд уже недостаточно.

Теоретически snap-пакеты должны обновляться до актуальной версии автоматически: несколько раз в день ваша система проверяет наличие обновлений и автоматически устанавливает найденные патчи. Но это не значит, что вы не можете обновлять систему вручную. За обновление snap-пакетов в официальных редакциях дистрибутива Ubuntu отвечает команда snap refresh.


Обновление по расписанию

Итак, по умолчанию демон snapd автоматически проверяет наличие обновлений для всех установленных snap-пакетов, и делает он это по четыре раза в сутки. Подробности о том, как часть система будет проверять наличие обновлений для snap-пакетов, можно узнать с помощью следующей команды:

snap refresh --time

Результаты, скорее всего, будут следующими:

Например, тут timer: 00:00-24:00/4 означает, что система проверяет наличие обновлений четыре раза в сутки. Последнее обновление было в 09:19, а следующее запланировано на 15:33.

Вы можете отредактировать расписание обновлений с помощью команды refresh.timer. Например, если вы хотите, чтобы система проверяла обновления snap-пакетов только с 6:00 до 8:00 и с 20:00 до 22:00, понадобится следующая команда:

sudo snap set system refresh.timer=6:00-8:00,20:00-22:00

Список snap-пакетов, которые можно обновить

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

snap refresh --list

Если обновлений нет, вы увидите следующее сообщение:

All snaps up to date.

Установка всех обновлений вручную

Если вы уже проверили доступность обновлений и не хотите ждать, пока система установит их в автоматическом режиме, накатить обновления можно и вручную. Для этого подойдёт следующая команда:

sudo snap refresh

Обновление конкретных snap-пакетов

Если хотите обновить конкретный snap-пакет, воспользуйтесь следующей командой:

sudo snap refresh package_name

Разумеется, в этом случае вам нужно знать точное название конкретной программы. Кстати, обновлять snap-пакеты можно и списком:

sudo snap refresh package_1 package_2

Обратите внимание: некоторые snap-пакеты не умеют обновляться в фоновом режиме (обычно это те приложения, которые устанавливаются в классическом режиме). То есть прежде, чем вы сможете обновить приложение, его придётся закрыть.


Проверка изменений, внесённых вместе с последними обновлениями

Поскольку большинство обновлений установленных snap-пакетов будет осуществляться в фоновом режиме без вашего участия, вам, возможно, будет интересно узнать, какие изменения в системе были произведены вместе с этими обновлениями. Узнать это можно следующей командой:

snap changes

Результат будет выглядеть примерно так:

С помощью ID можно узнать детали каждого подобного изменения:

snap change change_ID

Откат обновлений snap-пакетов

По умолчанию Snap сохраняет предыдущую версию приложения. Если новая версия работает неправильно или просто вам не понравилась, вы всегда можете вернуться к предыдущей версии вручную. Для этого введите следующую команду:

sudo snap revert package_name

Запрет обновлений конкретных snap-пакетов

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

sudo snap refresh --hold package_name

Чтобы остановить автоматическое обновление вообще всех snap-пакетов используют следующую команду:

sudo snap refresh --hold

Если когда-то вы отключили автоматические обновления snap-пакетов, а затем передумали и хотите вернуть всё как было, воспользуйтесь следующей командой:

sudo snap refresh --unhold

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

sudo snap refresh --unhold package_name

А ещё вы можете запретить системе обновлять конкретное приложение в течение определенного времени. Для этого понадобится следующая команда:

sudo snap refresh --hold=duration package_name

duration – это период, в течение которого система не будет проверять обновления для конкретного приложения. Можно указать часы, минуты и даже секунды.


Ну и напоследок…

Если вы из тех, кто до сих пор пользуется тарифом с ограничениями по трафику, автоматические обновления вам явно ни к чему, ибо snap-пакеты сами по себе весят немало, и тратить на них драгоценный трафик вы явно не хотите. Но в Ubuntu есть команда, предотвращающая обновление snap-пакетов через сеть с ограниченным трафиком:

sudo snap set system refresh.metered=hold

Разумеется, это далеко не всё, но если нужно больше, вам стоит подробнее изучить официальную документацию.

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

Абхишек Пракаш,
It’s FOSS
5 июня 2023

Comment