apt (Advanced Package Tool) — это высокоуровневый пакетный менеджер в Debian, Ubuntu и производных от них дистрибутивах: он ставит, обновляет, удаляет и ищет программы, автоматически подтягивая нужные зависимости из репозиториев. Ниже разберем, чем apt отличается от apt-get и dpkg, где он хранит списки пакетов и репозитории и какие команды нужны в повседневной работе — update, upgrade, install, remove, purge, search.
Содержание
Что такое apt и зачем он нужен
Программы в Debian и Ubuntu распространяются в виде пакетов — файлов с расширением .deb. В одном пакете лежат исполняемые файлы, конфигурация и метаданные: имя, версия и список зависимостей (других пакетов, без которых программа не заработает).
Ставить такие пакеты вручную неудобно: у одной программы бывают десятки зависимостей, а у них — свои. apt берет эту работу на себя. Вы просите установить пакет по имени — apt находит его в репозитории, вычисляет полное дерево зависимостей, скачивает все нужное и ставит в правильном порядке.
Репозиторий — это сервер (или локальный носитель) с коллекцией пакетов и индексом: перечнем того, что доступно и каких версий. Список подключенных репозиториев хранится в конфигурации системы (пути ниже). Именно из репозиториев apt берет и сами программы, и информацию об обновлениях.
dpkg, apt-get и apt: чем отличаются
Эти три инструмента часто путают, хотя они работают на разных уровнях. Короткий словарь, чтобы развести их сразу:
- dpkg — низкоуровневая утилита. Ставит и удаляет один конкретный
.deb-файл, который у вас уже есть на диске. Не ходит в репозитории и не разрешает зависимости: если пакету чего-то не хватает, dpkg просто сообщит об ошибке. - apt-get (вместе с
apt-cache) — классический высокоуровневый интерфейс поверх dpkg. Умеет работать с репозиториями и разрешать зависимости. Стабильный набор опций, поэтому его удобно использовать в скриптах. - apt — более новая единая команда, объединившая самые частые операции apt-get и apt-cache в одном инструменте с удобным для человека выводом: прогресс-бар, цветной текст, сводка изменений. Рассчитана на работу руками в терминале.
| Инструмент | Уровень | Репозитории и зависимости | Когда брать |
|---|---|---|---|
| dpkg | низкий | нет | поставить один локальный .deb, посмотреть, что установлено |
| apt-get / apt-cache | высокий | да | скрипты и автоматизация (стабильные опции) |
| apt | высокий | да | повседневная работа руками в терминале |
Важная оговорка: apt не заменяет apt-get полностью. Разработчики намеренно не гарантируют неизменность интерфейса apt между версиями, поэтому для скриптов рекомендуют apt-get. Для интерактивной работы apt удобнее — на нем и сосредоточимся.
Где apt хранит списки пакетов и репозитории
Полезно знать три места, куда apt пишет и откуда читает:
- Список репозиториев — файл
/etc/apt/sources.listи отдельные файлы в каталоге/etc/apt/sources.list.d/. В свежих релизах (Debian 12+, Ubuntu 24.04+) по умолчанию используется новый формат deb822 — файлы с расширением.sourcesв том же каталоге (например,/etc/apt/sources.list.d/ubuntu.sources). Старый однострочный формат тоже поддерживается. - Скачанный индекс пакетов — каталог
/var/lib/apt/lists/. Сюда командаupdateскладывает перечни доступных пакетов из каждого репозитория. Это локальная копия, по которой apt отвечает наsearch,showиinstall. - Кеш скачанных пакетов — каталог
/var/cache/apt/archives/. Сюда попадают сами.deb-файлы перед установкой; их можно удалить командойsudo apt clean, если нужно освободить место.
Различайте два перечня: индекс из /var/lib/apt/lists/ — это «что вообще доступно в репозиториях», а список установленного на вашей машине ведет dpkg (посмотреть — apt list --installed).
Основные команды apt
Общий синтаксис такой: apt <команда> <пакеты> <опции>. Команды, которые меняют систему, требуют прав суперпользователя, поэтому идут через sudo. Команды, которые только читают (search, show, list), в sudo не нуждаются.
Минимальный рабочий сценарий — обновить индекс и поставить программу:
sudo apt update
sudo apt install htop
Первая команда освежает локальный индекс, вторая ставит утилиту htop со всеми зависимостями. Разберем команды по отдельности.
update — обновить индекс репозиториев
sudo apt update
Команда обходит все подключенные репозитории и обновляет локальный индекс в /var/lib/apt/lists/. Она не устанавливает и не обновляет сами программы — только освежает информацию о том, что доступно. Типичный вывод в конце сообщает, сколько пакетов можно обновить:
Reading package lists... Done
Building dependency tree... Done
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
Запускать update перед каждой установкой не обязательно, но полезно делать это перед установкой набора пакетов и перед обновлением системы — иначе apt будет опираться на устаревший индекс.
upgrade — обновить установленные пакеты
sudo apt upgrade
Устанавливает доступные обновления для уже установленных пакетов. Перед выполнением apt покажет список того, что будет обновлено, установлено дополнительно или удалено, и спросит подтверждение — прочитайте этот список, прежде чем нажать Y. Обычный upgrade старается ничего не удалять; если для обновления нужно удалить пакет, он отложит такое обновление.
Более полное обновление делает full-upgrade (в apt-get ему соответствует dist-upgrade):
sudo apt full-upgrade
Эта команда разрешает удалять пакеты, если это нужно, чтобы обновить остальные. Она мощнее, но и опаснее — именно поэтому внимательно смотрите на строку «будет удалено» в подтверждении.
install — установить пакеты
sudo apt install nginx
Ставит указанный пакет и его зависимости. Несколько пакетов перечисляются через пробел, без запятых; конкретную версию можно задать через знак равенства:
sudo apt install git curl
sudo apt install nginx=1.24.0-1ubuntu1
Той же командой apt install обновляют один конкретный пакет до последней доступной версии, не трогая остальные.
remove и purge — удалить пакеты
Обе команды меняют состояние системы, требуют sudo и показывают список к удалению перед подтверждением — его тоже стоит прочитать, чтобы случайно не снести нужное.
sudo apt remove nginx
sudo apt purge nginx
Разница между ними — в конфигурации:
removeудаляет пакет, но оставляет его конфигурационные файлы в системе (например, в/etc/). Если позже поставить пакет заново, настройки подхватятся.purgeудаляет пакет вместе с его системными конфигами. Личные файлы в домашнем каталоге (~/.config,~/.local) apt не трогает — их пакетный менеджер не отслеживает.
Отдельно стоит autoremove — убирает пакеты, которые ставились автоматически как зависимости и больше никому не нужны:
sudo apt autoremove
Команда полезна для чистки, но перед подтверждением проверьте список: иногда в него попадает то, что вы хотели бы оставить (например, старые ядра держат намеренно). Общая логика для всех команд удаления — не запускать вслепую: посмотреть, что apt собирается тронуть, и только потом соглашаться.
search, show и list — найти и посмотреть
Эти команды только читают данные и работают без sudo.
apt search nginx
apt show nginx
search ищет слово в именах и описаниях пакетов из индекса, show показывает подробности одного пакета: версию, размер, зависимости, описание. Искать только по имени (не по описанию) помогает опция --names-only, она понимает регулярные выражения:
apt search --names-only '^python3-'
Команда list выводит пакеты по фильтру:
apt list --installed
apt list --upgradable
--installed покажет установленное, --upgradable — то, для чего вышли новые версии (после свежего update).
Выводы
- apt — высокоуровневый пакетный менеджер Debian и Ubuntu: ставит, обновляет, удаляет и ищет программы, сам разрешая зависимости из репозиториев.
- Три инструмента разного уровня: dpkg работает с одним локальным
.debбез зависимостей; apt-get подходит для скриптов (стабильные опции); apt удобен для работы руками. - Ключевые команды:
update(обновить индекс, не программы),upgrade/full-upgrade(обновить пакеты),install,remove(без конфигов) иpurge(с конфигами),search/show/list. - Списки репозиториев — в
/etc/apt/sources.listи/etc/apt/sources.list.d/; скачанный индекс — в/var/lib/apt/lists/; кеш пакетов — в/var/cache/apt/archives/. - Команды, меняющие систему (upgrade, remove, purge, autoremove, full-upgrade), запускайте через sudo и сначала читайте список изменений, который apt показывает перед подтверждением.
Где применяется / связь с практикой
Освойте тему на практике
Уверенная работа с apt — базовый навык системного администратора и DevOps-инженера: развертывание сервисов, подготовка серверов, сборка Docker-образов (внутри Dockerfile пакеты ставятся тем же apt install) — все опирается на пакетный менеджер и понимание репозиториев. Разобраться с устройством Linux системно, от файловой системы и прав до управления пакетами и сервисами, помогает курс Linux Basic.
Освойте тему на практике
Если хочется сначала посмотреть на формат и уровень, загляните на открытые уроки Otus — там разбирают практические темы вживую и можно задать вопрос преподавателю.
Смежные темы: Основы работы со скриптами, Docker: основы работы.
FAQ
Нужно ли запускать apt update перед каждой установкой?
Нет. Достаточно делать это периодически, особенно перед установкой сразу нескольких пакетов и перед обновлением системы — чтобы apt работал по свежему индексу репозиториев, а не по устаревшему.
Можно ли поставить программу из .deb-файла, скачанного вручную?
Да, командой sudo apt install ./имя-пакета.deb (с путем к файлу) — apt подтянет зависимости из репозиториев. Утилита dpkg -i тоже установит файл, но зависимости придется доставлять отдельно.
Что делать, если apt пишет об ошибке зависимостей или «broken packages»?
Сначала запустите sudo apt update, затем sudo apt --fix-broken install — команда попробует доустановить недостающие зависимости и привести систему в согласованное состояние.



