Вопрос или проблема
Я только что наткнулся на переключатель --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, является активной.
Применение
Теперь, когда вы понимаете, почему может существовать несколько ревизий, возникает вопрос: почему они не удаляются автоматически? Это связано с некоторыми соображениями:
-
Безопасность и восстановление: Системы управления пакетами, такие как snap, предпочитают оставлять предыдущие версии для безопасности. Это позволяет пользователю или администратору системы таковым образом легко и быстро откатиться на предыдущее состояние, если возникнут проблемы с новой версией.
-
Автоматическое освобождение дискового пространства: Хотя snap и сохраняет предыдущие версии, у системы есть механизмы для автоматического удаления старых ревизий. Обычно остаются две последние ревизии — активная и одна предыдущая на случай, если откат потребуется. Это делается при регулярной уборке системы, которая может происходить автоматически.
-
Контроль над ревизиями: Администраторы могут вручную управлять ревизиями с помощью команд. Например, командой
snap remove --revision=<revision-number>
можно удалить конкретную ревизию, если вы уверены, что откат не потребуется.
Как управлять этими ревизиями?
-
Просмотр всех ревизий: Используйте команду
snap list --all
, как вы уже сделали, чтобы увидеть все существующие ревизии. -
Удаление старых ревизий вручную: Если вы уверены, что более старые версии не нужны, используйте команду
snap remove <имя_пакета> --revision=<номер_ревизии>
. -
Освобождение дискового пространства: Snap автоматически будет управлять некоторым количеством старых ревизий, но вы также можете использовать команду
snap list --all
и удалить ненужные ревизии вручную. -
Откат к предыдущей версии: Если возникает необходимость откатиться, используйте команду
snap revert <имя_пакета>
. Она активирует предыдущую версию пакета из списка ревизий, отметив текущую версию как отключенную.
Заключение
Таким образом, наличие нескольких ревизий одного и того же snap-пакета является заложенной функциональностью для обеспечения гибкости и безопасности. Хотя эти ревизии не удаляются сразу, механизмы управления snap-пакетами предоставляют пользователям и администраторам надежные инструменты для контроля за системой. Это делает snap одной из удобных и надежных систем управления пакетами в современных Linux-дистрибутивах.