Как устанавливать и удалять программы с помощью APT и Snap в Ubuntu 22.04

Как устанавливать и удалять программы с помощью APT и Snap в Ubuntu 22.04

APT или Snap? Разбираемся, как использовать APT для установки классических DEB-пакетов и Snap для изолированных приложений.

Ubuntu лого

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

Два основных инструмента управления пакетами на Ubuntu — APT и Snap — предлагают разные подходы к установке, обновлению и удалению программ. В этой статье мы разберём все нюансы и условия их применения, чтобы вы могли эффективно работать с обоими инструментами, особенно при настройке и администрировании VPS. Также рассмотрим, как удалить Snap из системы и какие альтернативные менеджеры существуют.

APT — классический менеджер пакетов Ubuntu 22.04

APT — это система управления пакетами, унаследованная от Debian. Она работает с форматом .deb и опирается на централизованные репозитории, которые содержат тысячи предварительно собранных программ. APT автоматически разрешает зависимости (то есть устанавливает их вместе с основным пакетом), что упрощает установку сложных приложений.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Управление пакетами в APT 

Обновление списков пакетов. Перед установкой любого ПО рекомендуется обновить локальную базу данных пакетов. Это делается командой:

sudo apt update

Здесь sudo предоставляет права суперпользователя, а apt update синхронизирует локальный индекс пакетов с удалёнными репозиториями, указанными в:

/etc/apt/sources.list

и файлах из:

/etc/apt/sources.list.d/

Установка пакетов. Для установки пакета, например, текстового редактора nano, выполните:

sudo apt install nano

или:

sudo apt install -y nano

Где install — ключевая команда для установки, а добавление опции -y автоматически подтверждает действие, что полезно в скриптах.

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

sudo apt install nginx

APT автоматически установит сам Nginx, его модули и зависимости, такие как OpenSSL. После установки сервис будет автоматически запущен, что можно проверить через:

systemctl status nginx

Поиск пакетов. Если вы не знаете точное название пакета, используйте такую команду:

apt search "python framework"

Она выведет все пакеты, в описании которых есть слова «python» и «framework». Для фильтрации результатов добавьте grep:

apt search mysql | grep -i "client"

Обновление системы. Для обновления всех установленных пакетов до последних версий:

sudo apt upgrade

Если требуется обновить и сами пакеты, и системное ядро, используйте:

sudo apt full-upgrade

Эта команда может удалять старые пакеты для разрешения зависимостей.

Удаление пакетов. Чтобы удалить пакет, но сохранить его конфигурационные файлы:

sudo apt remove nano

Для полного удаления вместе с конфигами:

sudo apt purge nano

Чтобы автоматически удалить пакеты, которые больше не нужны (например, старые зависимости):

sudo apt autoremove

Работа с репозиториями

Сторонние репозитории добавляются через:

add-apt-repository

Например, для установки последней версии Node.js:

sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo apt update
sudo apt install -y nodejs

Здесь ppa:chris-lea/node.js — Personal Package Archive (PPA), хранящийся на Launchpad. После добавления PPA обновление индексов обязательно.

Настройка автоматических обновлений в APT

Файл:

/etc/apt/apt.conf.d/50unattended-upgrades

отредактируйте так:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESM:${distro_codename}";
};

Затем активируйте службу:

sudo systemctl enable --now unattended-upgrades

Работа с DEB-пакетами через dpkg

Хотя APT автоматизирует большинство задач, иногда требуется прямое взаимодействие с dpkg — низкоуровневой утилитой для управления DEB-пакетами.

Установка пакета в обход репозиториев:

sudo dpkg -i package.deb

Если возникнут ошибки зависимостей, исправьте их через:

sudo apt --fix-broken install

Удаление пакета:

sudo dpkg -r package-name  # удаление, но сохранение конфигов
sudo dpkg -P package-name  # полное удаление с конфигами

Извлечение файлов из DEB-пакета:

ar x package.deb  # распаковка архива
tar -xf data.tar.xz -C /target/directory  # извлечение данных

Чтобы просмотреть содержимое DEB-файла без установки:

dpkg -c package.deb  # вывод списка файлов
dpkg -I package.deb  # просмотр метаданных из control

Snap — современные изолированные пакеты

Snap — система пакетирования от Canonical, созданная для унификации дистрибутивов Linux. Snap-пакеты (с расширением .snap) автономны: они включают все зависимости и изолированы от основной системы через механизмы ядра Linux, такие как AppArmor и cgroups. Это обеспечивает стабильность, но увеличивает размер пакетов.

Установка Snap. В Ubuntu 22.04 Snap предустановлен. Если его нет, установите через APT:

sudo apt install snapd

После этого перезапустите сессию оболочки или выполните:

source /etc/profile.d/apps-bin-path.sh

Поиск пакетов. Для поиска пакетов в магазине Snap (Snap Store) используйте:

snap find postgresql

Команда выведет имя пакета, версию, разработчика и описание.

Установка пакетов. Установите, например, графический редактор GIMP:

sudo snap install gimp

Пакет будет автоматически загружен из официального магазина и смонтирован в /snap/.

Каналы и контроль версий. Snap позволяет выбирать каналы обновлений:

  • stable — стабильная версия (по умолчанию);
  • candidate — кандидат на стабильность;
  • beta/edge — тестовые сборки.

Например, установка PostgreSQL из канала latest/stable:

sudo snap install postgresql16 --channel=16/stable

Чтобы переключить канал после установки:

sudo snap refresh postgresql16 --channel=17/beta

Ограничения безопасности. Snap-пакеты по умолчанию не имеют доступа к системным ресурсам. Для предоставления прав используйте snap connect. Например, чтобы разрешить редактору VSCode доступ к USB:

sudo snap connect code:raw-usb

Список доступных интерфейсов можно найти через:

snap interfaces

Обновление и удаление. Обновить все Snap-пакеты:

sudo snap refresh

Для удаления пакета:

sudo snap remove gimp

Обратите внимание

Данные приложения в ~/snap/ сохраняются, чтобы удалить их, добавьте флаг --purge.

Как удалить Snap из Ubuntu 22.04

Иногда пользователи предпочитают полностью отказаться от менеджера Snap. Причины могут быть разными:

  • Конфликты с APT. Некоторые пакеты (например, chromium или firefox) в Ubuntu устанавливаются через Snap по умолчанию, что может мешать работе с их DEB-версиями. Например, apt install firefox в Ubuntu 22.04 поставит Snap-пакет, а не классический DEB.
  • Автообновления. Snap-пакеты обновляются автоматически, что не всегда приемлемо на продакшен-серверах, где требуется контроль версий.
  • Производительность. Из-за монтирования пакетов в виртуальные файловые системы (/snap/) и фоновых служб Snap создаёт дополнительную нагрузку на дисковое пространство и оперативную память.
  • Идеологические причины. Некоторые пользователи предпочитают использовать только проверенные репозитории APT, избегая проприетарного Snap Store.

Как полностью удалить Snap из системы

Шаг 1. Удаление всех Snap-пакетов. Сначала выведите список установленных Snap-приложений:

snap list

Удалите каждый пакет (пример для firefox):

sudo snap remove --purge firefox

Флаг --purge удаляет также пользовательские данные из ~/snap/.

Шаг 2. Остановка и удаление Snapd. Удалите сам менеджер Snap и связанные службы:

sudo systemctl stop snapd.socket snapd.service  # остановка служб
sudo apt purge snapd -y             # удаление snapd и конфигов
sudo rm -rf /snap /var/snap /var/lib/snapd      # очистка остаточных файлов

Шаг 3. Блокировка Snap в APT (опционально). Чтобы APT больше не устанавливал Snap-пакеты, создайте файл-заглушку с приоритетом:

sudo touch /etc/apt/preferences.d/nosnap.pref

Добавьте в него содержимое:

Package: snapd
Pin: release a=*
Pin-Priority: -10

Это запретит установку snapd через APT.

Возврат Snap

Если передумаете, установите Snap обратно:

sudo apt install snapd

Удаление Snap оправдано в специализированных сценариях (минималистичные серверы, системы с жёсткими требованиями к лицензиям). Для большинства пользователей достаточно точечно заменять проблемные Snap-пакеты на DEB или Flatpak-версии.

APT (DEB) или Snap — когда что использовать

Сравним менеджеры по нескольким критериям:

Скорость и размер. DEB-пакеты меньше, так как используют общие библиотеки. Установка через APT быстрее, особенно на слабом железе. Например, установка firefox через APT займёт ~150 МБ, тогда как Snap-версия — около 250 МБ из-за встроенной среды выполнения.

Изоляция и безопасность. DEB-пакеты интегрируются в систему, что повышает риски при установке непроверенного ПО. В отличие от Snap, здесь нет песочницы по умолчанию. Snap удобен для закрытых проприетарных приложений (например, Slack или Spotify), где изоляция снижает риски утечек данных. Также Snap гарантирует, что пакет протестирован на всех поддерживаемых дистрибутивах.

Контроль версий. DEB-пакеты в официальных репозиториях привязаны к релизу Ubuntu. Для получения последних или нестандартных версий ПО (например, PHP 8.3 в Ubuntu 22.04) приходится добавлять сторонние PPA или собирать пакеты вручную. В Snap всё намного проще: если вам нужна конкретная версия ПО, достаточно зафиксировать её через каналы.

Автообновления. Snap-пакеты обновляются автоматически, что удобно для критических обновлений безопасности. В APT нужно настраивать unattended-upgrades или выполнять apt upgrade вручную.

Конфликты зависимостей. Бывают ситуации, когда два DEB-пакета требуют разных версий одной библиотеки. Вам придётся выбирать между ними или использовать контейнеризацию. Кроме того, установка пакетов и зависимостей (например, библиотек) через DEB может заменить их системную версию, что приведёт к поломке других пакетов. Со Snap такая ситуация невозможна, так как каждый пакет самодостаточен (включает все зависимости) и изолирован от среды.

Чем заменить APT и Snap-пакеты

  • Официальные DEB-репозитории разработчиков. Например, чтобы установить Firefox без Snap:
sudo add-apt-repository ppa:mozillateam/ppa
echo 'Package: firefox*' | sudo tee /etc/apt/preferences.d/mozillateam.ppa
echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/mozillateam.ppa
sudo apt update && sudo apt install firefox
  • Flatpak — альтернативный менеджер изолированных пакетов:
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  • Сборка из исходников — подойдёт для полного контроля версий. Например, установка Python через pyenv:
curl https://pyenv.run | bash
pyenv install 3.11.5

Важные предупреждения:

  • Критические зависимости. Некоторые системные инструменты (например, lxd или core18) поставляются через Snap. Убедитесь, что их удаление не нарушит работу системы.
  • Обновления системы. После удаления Snap команда sudo apt upgrade может пытаться восстановить зависимости — внимательно проверяйте предлагаемые изменения.

Заключение

Выбор между APT и Snap зависит от конкретной задачи. APT остаётся основой Ubuntu, так как предлагает проверенные пакеты с оптимальным использованием ресурсов. Snap ориентирован на кросс-дистрибутивную разработку и предлагает актуальную модель распространения ПО. Комбинируя оба инструмента, вы сможете гибко управлять своей системой.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях