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

Вы узнаете, чем отличаются эти менеджеры, какие у них преимущества и недостатки. Отдельно рассмотрим, как полностью удалить Snap, если он не подходит под ваши задачи, и чем его заменить.
Два основных инструмента управления пакетами на Ubuntu — APT и Snap — предлагают разные подходы к установке, обновлению и удалению программ. В этой статье мы разберём все нюансы и условия их применения, чтобы вы могли эффективно работать с обоими инструментами, особенно при настройке и администрировании VPS. Также рассмотрим, как удалить Snap из системы и какие альтернативные менеджеры существуют.
APT — классический менеджер пакетов Ubuntu 22.04
APT — это система управления пакетами, унаследованная от Debian. Она работает с форматом .deb и опирается на централизованные репозитории, которые содержат тысячи предварительно собранных программ. APT автоматически разрешает зависимости (то есть устанавливает их вместе с основным пакетом), что упрощает установку сложных приложений.
Управление пакетами в 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 ориентирован на кросс-дистрибутивную разработку и предлагает актуальную модель распространения ПО. Комбинируя оба инструмента, вы сможете гибко управлять своей системой.
Читайте в блоге:
- Установка Java на Ubuntu 22.04 через Apt: полное руководство
- Обновление Linux Mint: форк компонентов менеджера пакетов APT, модернизация серверов и не только
- Как настроить автоматическое обновление серверных пакетов на Ubuntu