Почему у меня один и тот же snap-пакет с несколькими ревизиями?

Вопрос или проблема

Я только что наткнулся на переключатель --all при перечислении пакетов snap:

$ snap list --all

Name               Version                     Rev    Tracking       Publisher   Notes
bare               1.0                         5      latest/stable  canonical  base
core18             20240920                    2846   latest/stable  canonical  base,disabled
core18             20250123                    2855   latest/stable  canonical  base
gnome-3-28-1804    3.28.0-19-g98f9e67.98f9e67  198    latest/stable  canonical  -
gtk-common-themes  0.1-81-g442e511             1535   latest/stable  canonical  -
snapd              2.66.1                      23258  latest/stable  canonical  snapd,disabled
snapd              2.67                        23545  latest/stable  canonical  snapd

Я не понимаю, почему эти неиспользуемые или, скажем, disabled пакеты не удаляются автоматически, и как вообще может возникнуть ситуация, когда у меня есть 2 одинаковых снапа с разными ревизиями?

ОС: Linux Mint 22 Cinnamon.

Ответ или решение

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

Теория

Snap — это система пакетного управления от Canonical, используемая для распространения и установки программного обеспечения в виде стабильных, изолированных пакетов, называемых «снапами». Snap-пакеты включают в себя не только само приложение, но и все его зависимости, позволяя им работать в среде, независимой от системных библиотек.

Каждый snap-пакет может иметь несколько ревизий. Когда обновляется snap, новая версия пакета устанавливается параллельно с предыдущей, а старая версия переводится в состояние «disabled» (отключено). Этот механизм позволяет легко откатиться на предыдущую версию в случае, если новая ревизия проявляет себя нестабильно или вызывает проблемы совместимости.

Пример

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

snapd              2.66.1                      23258  latest/stable  canonical  snapd,disabled
snapd              2.67                        23545  latest/stable  canonical  snapd

Из этого примера видно, что у пакета snapd две ревизии: 23258 и 23545. Первая из них, 23258, отключена, и это значит, что она не используется в данный момент. Вторая ревизия, 23545, является активной.

Применение

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

  1. Безопасность и восстановление: Системы управления пакетами, такие как snap, предпочитают оставлять предыдущие версии для безопасности. Это позволяет пользователю или администратору системы таковым образом легко и быстро откатиться на предыдущее состояние, если возникнут проблемы с новой версией.

  2. Автоматическое освобождение дискового пространства: Хотя snap и сохраняет предыдущие версии, у системы есть механизмы для автоматического удаления старых ревизий. Обычно остаются две последние ревизии — активная и одна предыдущая на случай, если откат потребуется. Это делается при регулярной уборке системы, которая может происходить автоматически.

  3. Контроль над ревизиями: Администраторы могут вручную управлять ревизиями с помощью команд. Например, командой snap remove --revision=<revision-number> можно удалить конкретную ревизию, если вы уверены, что откат не потребуется.

Как управлять этими ревизиями?

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

  2. Удаление старых ревизий вручную: Если вы уверены, что более старые версии не нужны, используйте команду snap remove <имя_пакета> --revision=<номер_ревизии>.

  3. Освобождение дискового пространства: Snap автоматически будет управлять некоторым количеством старых ревизий, но вы также можете использовать команду snap list --all и удалить ненужные ревизии вручную.

  4. Откат к предыдущей версии: Если возникает необходимость откатиться, используйте команду snap revert <имя_пакета>. Она активирует предыдущую версию пакета из списка ревизий, отметив текущую версию как отключенную.

Заключение

Таким образом, наличие нескольких ревизий одного и того же snap-пакета является заложенной функциональностью для обеспечения гибкости и безопасности. Хотя эти ревизии не удаляются сразу, механизмы управления snap-пакетами предоставляют пользователям и администраторам надежные инструменты для контроля за системой. Это делает snap одной из удобных и надежных систем управления пакетами в современных Linux-дистрибутивах.

Оцените материал
Добавить комментарий

Капча загружается...