apt — что это и зачем
APT (Advanced Package Tool) — система управления пакетами в Debian, Ubuntu и их производных. Через неё ставят, обновляют и удаляют программы из репозиториев. Команда `apt` — это удобная обёртка для людей; в скриптах используют более стабильный `apt-get`.
apt
APT (Advanced Package Tool) — система управления пакетами в Debian, Ubuntu и их производных. Через неё ставят, обновляют и удаляют программы из репозиториев. Команда apt — это удобная обёртка для людей; в скриптах используют более стабильный apt-get.
Что это в одном абзаце
В Ubuntu вы не качаете программы с сайтов, как в Windows. Программы лежат в репозиториях — серверах, на которых хранятся подписанные пакеты .deb. Команда apt (и её родственники apt-get, apt-cache, apt-mark) обращается к этим репозиториям, скачивает пакеты, разрешает зависимости и ставит их в систему.
Один типичный сценарий:
sudo apt update # обновить локальный список пакетов
sudo apt install nginx # поставить nginx с зависимостями
sudo apt upgrade # подтянуть свежие версии всего установленного
sudo apt remove nginx # удалить пакет (конфиги остаются)
sudo apt purge nginx # удалить пакет вместе с конфигами
Из чего состоит APT
«APT» — это собирательное название для нескольких CLI-инструментов поверх одной библиотеки libapt:
apt— современная обёртка для интерактивной работы. Цветной вывод, прогресс-бар, компактный синтаксис. Появилась в Ubuntu 16.04.apt-get— старый CLI, стабильный API без warning-ов. Используется в скриптах автоматизации, Dockerfile, CI.apt-cache— поиск и просмотр метаданных без установки:apt-cache search nginx,apt-cache show nginx.apt-mark— фиксация версий:sudo apt-mark hold nginxзапретит апгрейд этого пакета до явногоunhold.apt-key— устаревший способ управления GPG-ключами репозиториев. С Ubuntu 22.04 предпочтительный путь — класть ключ в/etc/apt/keyrings/.dpkg— низкоуровневый менеджер пакетов. Работает с одиночными.deb-файлами и не разрешает зависимости. APT — это, по сути, «оркестратор поверх dpkg».
В реальной жизни вы используете 95% времени apt (или apt-get в скриптах) и иногда dpkg -l | grep <name> для быстрого поиска по установленным.
Откуда APT берёт пакеты
Список репозиториев лежит в двух местах:
/etc/apt/sources.list— старый формат, одна строка на источник./etc/apt/sources.list.d/*.listили*.sources— отдельные файлы для дополнительных репозиториев. Сюда кладут конфиги Docker, NodeSource, PostgreSQL.
Формат строки в sources.list:
deb [signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable
Что внутри:
deb— это репозиторий с бинарными пакетами. Альтернатива —deb-srcдля исходников.signed-by=...— путь к GPG-ключу, которым подписан репозиторий. APT откажется ставить пакеты, не подписанные ожидаемым ключом.- URL — адрес репозитория.
noble— codename релиза Ubuntu (24.04 = noble, 22.04 = jammy, 20.04 = focal).stable— компонент: stable / testing / nightly. Для Ubuntu-репозиториев это main / restricted / universe / multiverse.
После добавления нового репозитория всегда нужен sudo apt update, чтобы APT перечитал список доступных пакетов.
Что такое .deb-пакет
.deb — это формат пакета в Debian/Ubuntu. По сути это ar-архив, внутри:
control— метаданные: имя, версия, зависимости (Depends:), описание.data.tar.zst— собственно файлы, которые лягут в систему (бинарь в/usr/bin/, конфиги в/etc/, юниты systemd в/lib/systemd/system/).preinst/postinst/prerm/postrm— shell-скрипты, выполняемые до и после установки/удаления. Например,postinstобычно делаетsystemctl daemon-reload && systemctl enable --now.
Поставить отдельный .deb (например, скачанный с GitHub Release) можно через:
sudo apt install ./package.deb
apt поймёт, что это локальный файл, и сам подтянет зависимости из репозиториев. Можно и через dpkg -i, но он не разрешает зависимости — придётся потом ловить их через sudo apt -f install.
Чем APT отличается от snap и flatpak
Это три параллельные системы установки софта на Ubuntu:
- APT — нативные Debian-пакеты, ставятся в систему, делят системные библиотеки. Ниже накладные расходы по диску/памяти, но обновления привязаны к релизу Ubuntu.
- snap — самодостаточные пакеты, каждый со своей копией зависимостей. Изолированы через AppArmor. Удобны для быстрого обновления (Firefox, Chromium на Ubuntu сейчас snap), но «толще».
- flatpak — аналог snap, более популярен на десктопе вне Ubuntu, использует Flathub.
Для серверных приложений практически всегда — APT. snap уместен для desktop-софта и некоторых демонов (например, microk8s). flatpak — почти исключительно desktop.
Частые вопросы
Что значит APT в Linux
Advanced Package Tool — пакетный менеджер семейства Debian. Управляет установкой, обновлением и удалением пакетов формата .deb из репозиториев. Используется в Ubuntu, Debian, Linux Mint, Pop!_OS, Kali и других производных. В дистрибутивах Red Hat-семейства (Fedora, CentOS, RHEL) аналог — dnf/yum.
Чем apt отличается от apt-get
apt — современная обёртка для интерактивной работы: цветной вывод, прогресс-бар, удобнее для людей. apt-get — старая команда со стабильным CLI, рекомендована для скриптов. Обе используют одну библиотеку libapt и работают с теми же репозиториями.
Где APT хранит информацию о пакетах
Список репозиториев — /etc/apt/sources.list и /etc/apt/sources.list.d/. Скачанный кэш .deb — /var/cache/apt/archives/. База установленных пакетов — /var/lib/dpkg/status. GPG-ключи репозиториев на современной Ubuntu — /etc/apt/keyrings/.
Безопасно ли использовать sudo apt upgrade
Да, для security-обновлений — рутинная практика. Для больших обновлений (мажорные версии nginx, postgresql, ядра) на проде стоит сначала снять btrfs-снапшот, посмотреть apt list --upgradable и читать changelog критичных пакетов. Полный чек-лист — в статье apt update и apt upgrade без сюрпризов.
Почему apt просит sudo
apt пишет в системные пути (/usr/bin/, /etc/, /var/lib/dpkg/), куда обычный пользователь писать не может. Поэтому установка, обновление, удаление пакетов всегда требуют root. Команды только для чтения (apt list, apt search, apt-cache show) можно запускать без sudo.
Что почитать
- apt update и apt upgrade — безопасный апгрейд Ubuntu — практический гайд: разница
update/upgrade/full-upgrade, чек-лист перед прод-апгрейдом,unattended-upgrades, откат при поломке. - docker compose на Ubuntu — пример подключения стороннего apt-репозитория (Docker) с GPG-ключом в
/etc/apt/keyrings/. - systemd — большинство сервисов, ставящихся через apt, управляются через systemd-юниты.