Как удалить SNAP

1. Обзор

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

Все команды были протестированы в Snap 2.58.2, запущенной в Ubuntu Desktop 22.04.02 LTS. Однако они также должны быть совместимы с большинством других дистрибутивов Linux.

2. Введение в проблему

Хотя Snap предоставляет ряд преимуществ, у него также есть некоторые потенциальные недостатки, такие как использование дискового пространства, производительность и ограниченная интеграция и настройка.

Из-за этих проблем и некоторых спорных решений, принятых Canonical за последние несколько лет, некоторые дистрибутивы отключили или вообще удалили Snap из своих выпусков.

2.1. Недостатки Snap

По сравнению с традиционными системами упаковки, такими как .deb или другими форматами, такими как Flatpak и AppImage, пакеты Snap, как правило, занимают больше места на диске. Более того, они запускаются медленнее, поскольку требуют инициализации среды выполнения и загрузки зависимостей в память.

Поскольку пакеты Snap являются автономными и изолированными от хост-системы, они предлагают ограниченную интеграцию с системными ресурсами и другими приложениями. Это может вызвать проблемы с доступом к определенным системным ресурсам, таким как системные темы и шрифты.

2.2. Противоречия с браузером Chromium

Начиная с Ubuntu версии 19.10, Canonical обязала пользователей Ubuntu и ее производных использовать Snap для установки Chromium. Пакет chromium-browser .deb теперь включает только скрипты-оболочки, которые облегчают загрузку пакета Snap.

В результате этого решения, Linux Mint удалил Snap из своего пакета выпуска, начиная с версии 20 – Ulyana. Команда apt также предотвращает установку snapd.

2.3. Автоматическое обновление по умолчанию

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

2.4. Ubuntu не поддерживает Flatpak

Компания Canonical объявила, что она не будет включать программное обеспечение Flatpak в пакет Ubuntu, начиная с версии 23.04 – Lunar Lobster, в попытке стимулировать использование Snap вместо него.

3. Удаление и отключение Snap

Давайте отключим и удалим Snap из нашей системы.

При новой установке Ubuntu 22.04.2 LTS у нас предварительно установлены следующая версия Snap и пакеты:

$ snap --version
snap    2.58.2
snapd   2.58.2
series  16
ubuntu  22.04
kernel  5.19.0-35-generic

$ snap list
Name                       Version           Rev    Tracking         Publisher   Notes
bare                       1.0               5      latest/stable    canonical✓  base
core20                     20230126          1822   latest/stable    canonical✓  base
firefox                    110.0-3           2356   latest/stable/…  mozilla✓    -
gnome-3-38-2004            0+git.6f39565     119    latest/stable/…  canonical✓  -
gtk-common-themes          0.1-81-g442e511   1535   latest/stable/…  canonical✓  -
snap-store                 41.3-66-gfe1e325  638    latest/stable/…  canonical✓  -
snapd                      2.58.2            18357  latest/stable    canonical✓  snapd
snapd-desktop-integration  0.1               49     latest/stable/…  canonical✓  -

3.1. Удаление существующих пакетов Snap

Теперь давайте приступим к удалению пакетов Snap, или привязок, в следующем порядке:

$ snap remove firefox
$ snap remove gtk-common-themes
$ snap remove gnome-3-38-2004
$ snap remove snapd-desktop-integration
$ snap remove snap-store
$ snap remove core20
$ snap remove bare
$ snap remove snapd

Прежде чем перейти к следующему шагу, давайте убедимся, что список snaps пуст:

$ snap list
No snaps are installed yet. Try 'snap install hello-world'.

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

3.2. Удаление демона snapd

Далее давайте остановим, отключим, удалим и удержим демон snapd:

$ sudo systemctl stop snapd
Warning: Stopping snapd.service, but it can still be activated by:
snapd.socket

$ sudo systemctl disable snapd
Removed /etc/systemd/system/multi-user.target.wants/snapd.service.

$ sudo systemctl mask snapd
Created symlink /etc/systemd/system/snapd.service → /dev/null.

$ sudo apt purge snapd -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
snapd*
...
Removing snapd state

$ sudo apt-mark hold snapd
snapd set on hold.

Команда ‘apt-mark hold‘ означает, что пакет помечен как отложенный, что предотвратит автоматическую установку, обновление или удаление пакета.

3.3. Удаление каталогов пакетов Snap

Snap по умолчанию хранит все пакеты в каталоге ~/snap/. Давайте удалим его.:

$ rm -rf ~/snap/

Поскольку каталог находится в каталоге home, нам не нужно использовать sudo для его удаления. Однако важно быть осторожным при вводе команды, поскольку она удалит каталог рекурсивно.

Мы также должны убедиться, что путь ~/snap/ указан правильно.

3.4. Предотвращение установки Snap с помощью команды apt

Canonical изменила пакет chromium-browser .deb, теперь он включает только скрипты-оболочки, которые запускают установку Snap.

Чтобы предотвратить подобные случаи, мы можем использовать следующую команду, предложенную Linux Mint:

$ sudo cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF

В результате, когда мы пытаемся установить браузер Chromium с помощью команды apt:

$ sudo apt install chromium-browser
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
chromium-browser : PreDepends: snapd but it is not installable
E: Unable to correct problems, you have held broken packages.

Как мы можем видеть из приведенной выше команды, Snap не сможет установить себя без нашего согласия.

3.5. Удаление всех оставшихся каталогов Snap

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

Давайте убедимся, что мы вводим эти команды правильно, поскольку мы будем использовать sudo для рекурсивного удаления каталогов:

$ rm -rf ~/snap
$ sudo rm -rf /snap
$ sudo rm -rf /var/snap
$ sudo rm -rf /var/lib/snapd

4. Заключение

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

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