apt против apt-get: когда и как переходить на новый инструмент

Почему появился apt
Linux постоянно развивается. Многие изменения скрыты в ядре и библиотечных обновлениях, но некоторые влияют на повседневную работу пользователя. Команда apt появилась не для радикальной замены apt-get, а чтобы упростить и унифицировать инструменты работы с APT — Advanced Package Tool.
Раньше для управления пакетами использовались разделённые наборы команд: apt-get для операций с пакетами и apt-cache для получения информации. Со временем коллекция команд выросла и стала менее однородной. apt объединяет наиболее часто применяемые опции, сокращая дублирование и улучшая удобство работы.
Ключевая идея: поддерживать совместимость (apt-get остаётся), но предоставить более компактный, удобный интерфейс для большинства задач.
Что нового в apt по сравнению с apt-get
- Краткий синтаксис: многие привычные команды стали короче (удалён суффикс “-get”).
- Объединение команд apt-get и apt-cache в одну точку входа.
- Улучшения UX: прогресс при установке/удалении, понятные сообщения.
- Новые команды и более гибкие опции: full-upgrade, list –upgradeable, –only-upgrade и др.
Ниже — конкретные примеры и практические рекомендации.
Основные соответствия команд
В большинстве случаев вы можете заменить:
apt-get install [packagename]на
apt install [packagename]То же самое работает для update, upgrade, remove и др. Однако apt предлагает дополнительные возможности и опции, которые полезно знать.
Полное обновление системы
Команды update и upgrade остаются:
- sudo apt update — обновляет локальную базу пакетов из репозиториев.
- sudo apt upgrade — обновляет установленные пакеты без удаления других пакетов.
Новая команда:
sudo apt full-upgradefull-upgrade обновляет пакеты и при необходимости удаляет устаревшие или конфликтующие пакеты, чтобы завершить обновление. Это поведение похоже на сочетание upgrade + управление зависимостями, которое раньше приходилось выполнять вручную с apt-get.

Когда использовать full-upgrade:
- Если обновление требует удаления пакетов, которые конфликтуют с новыми версиями.
- При переходе между релизами, когда зависимостям нужно освободить место.
Когда не использовать:
- На критичных продакшн-серверах без резервного копирования и проверки зависимостей. В таких случаях выполняйте плановое обновление с тестированием.
Одновременная установка нескольких пакетов
apt позволяет устанавливать несколько пакетов одной командой:
sudo apt install package1 package2 package3Если пакет уже установлен, apt проверит наличие более новой версии и при необходимости обновит его. Это экономит время и уменьшает количество отдельных команд.
Установка без апгрейда существующего пакета
Иногда нужно переустановить пакет или установить зависимость без обновления самой установленной версии. Для этого есть опция –no-upgrade:
sudo apt install packagename --no-upgradeПротивоположная задача — загрузить обновлённую версию пакета в локальный кэш, но не устанавливать её:
sudo apt install packagename --only-upgrade–only-upgrade скачивает обновления для пакета, даже если он ещё не установлен, но не устанавливает его. Это редкая, однако иногда полезная операция при подготовке узлов к развертыванию.

Установка конкретной версии пакета
Если нужна строго определённая версия (например, последняя версия сломала нужную вам функциональность), указывайте версию явно:
sudo apt install packagename=version_numberВажно: последующие глобальные обновления могут переустановить пакет в более свежей версии. Чтобы удерживать конкретную версию, придётся блокировать пакет (см. раздел “Советы по фиксации версии” ниже).
Просмотр списков пакетов
apt добавляет удобные варианты для просмотра списков:
- Список пакетов, доступных для обновления:
apt list --upgradeable- Список установленных пакетов:
apt list --installed- Список всех версий пакетов (внимание на количество дефисов):
apt list ----all-versions(Обратите внимание: в этом ключе используются четыре дефиса.)

Удаление и очистка пакетов
Обычное удаление пакета:
sudo apt remove packagenameЭтот вариант удаляет исполняемые файлы, но часто оставляет конфигурационные файлы пользователя и пакета.
Полная очистка пакета:
sudo apt purge packagenamePurge удаляет как бинарные файлы, так и конфигурацию, оставляя систему чище.
Для удаления автоматически установленных, но уже не нужных зависимостей используйте:
sudo apt autoremoveЭта команда освобождает место на диске, удаляя пакеты, установленные как зависимости и больше не связанные с установленными приложениями.

Полезный набор команд (cheat sheet)
Ниже — компактная шпаргалка по наиболее полезным командам apt:
sudo apt update # Обновить списки пакетов
sudo apt upgrade # Обновить установленные пакеты (без удаления)
sudo apt full-upgrade # Обновить, при необходимости удалить конфликтующие пакеты
sudo apt install pkg # Установить пакет
sudo apt install pkg1 pkg2 # Установить несколько пакетов
sudo apt install pkg=1.2.3 # Установить конкретную версию
sudo apt install pkg --no-upgrade # Установить пакет, не обновляя уже установленные
sudo apt install pkg --only-upgrade # Скачать обновление, не устанавливая пакет
sudo apt remove pkg # Удалить пакет (оставляет конфиги)
sudo apt purge pkg # Удалить пакет и конфигурацию
sudo apt autoremove # Удалить неиспользуемые зависимости
apt list --installed # Список установленных пакетов
apt list --upgradeable # Список пакетов для обновления
apt list ----all-versions # Список всех доступных версийСохраните этот блок в заметках — он пригодится при миграции и обслуживании.
Советы по фиксации версии и удержанию пакетов
Если нужно удержать пакет на заданной версии, можно воспользоваться apt-mark:
sudo apt-mark hold packagename # Заблокировать пакет от автоматического обновления
sudo apt-mark unhold packagename # Разблокировать пакетЭто полезно на серверах, где обновление критичного компонента может нарушить работу сервисов.
Когда не стоит переходить на apt
- В автоматизированных скриптах и CI/CD, где ожидается стабильное поведение старых опций apt-get — пока не протестируйте сценарии. apt совместим в основном, но формат вывода и поведение некоторых опций слегка отличаются.
- На системах с крайне строгими требованиями к выводу для парсинга: apt выводит прогресс и человекочитаемые строки, что может мешать простым скриптам. В таких случаях можно продолжить использовать apt-get или адаптировать парсинг.
План миграции для администратора
- Инвентаризация: соберите скрипты и роли, которые вызывают apt-get/apt-cache.
- Тестирование: на тестовой машине замените apt-get на apt и прогоните сценарии.
- Коррекция: скорректируйте парсинг вывода и обработку ошибок (apt возвращает коды выхода аналогично).
- Документация: обновите internal runbook и playbooks (Ansible/Puppet/Chef).
- Постепенный переход: сначала перейти на apt в интерактивных сценариях, затем — в автоматизации.
Чеклист по ролям
Системный администратор:
- Проверить совместимость скриптов
- Протестировать full-upgrade на staging
- Добавить резервные копии перед массовыми обновлениями
Разработчик/инженер DevOps:
- Обновить CI-пайплайны
- Убедиться в корректности парсинга вывода
- Использовать apt-mark для удержания нужных версий
Обычный пользователь:
- Пользоваться apt для повседневных задач (update, install, remove)
- Использовать autoremove для очистки диска
Частые ошибки и как их избежать
Ошибка: запуск full-upgrade без проверки зависимостей на сервере в продакшне. Рекомендация: сначала протестируйте на staging и читайте список удаляемых пакетов перед подтверждением.
Ошибка: парсинг вывода apt как текста, когда нужен машинный формат. Рекомендация: для автоматизации используйте apt-get или apt-cache с опциями, или используйте библиотеки управления пакетами (libapt, python-apt).
Ошибка: ожидание точной функциональной замены всех опций apt-get. Рекомендация: проверьте конкретные опции в man apt и держите резервы для старых команд.
Набор решений и альтернатив
- Для скриптов критичной автоматизации можно временно оставлять apt-get; предварительно протестируйте переход.
- Для сложного управления пакетами и зависимостями используйте инструменты конфигурационного менеджмента (Ansible, Puppet) и lock-файлы.
Краткая методология принятия решения
- Оцените влияние изменений на процессы.
- Выполните тестовую миграцию в изолированной среде.
- Обновите документацию и автоматизацию.
- Мониторьте систему после перехода и фиксируйте откаты.
Небольшой глоссарий
- APT: Advanced Package Tool — система управления пакетами в Debian-подобных дистрибутивах.
- apt-get, apt-cache: старые утилиты APT для установки и запроса информации.
- apt: современная утилита-обёртка с удобным интерфейсом для повседневных задач.
Визуальная подсказка для принятия решения
flowchart TD
A[Нужна простая интерактивная работа с пакетами?] -->|Да| B[Используйте apt]
A -->|Нет, автоматизация/CI| C[Требуется стабильный вывод?]
C -->|Да| D[Оставьте apt-get или адаптируйте скрипты]
C -->|Нет| B
B --> E[Тестирование на staging]
D --> E
E --> F[Постепенный переход и документация]Часто задаваемые вопросы
Надо ли полностью отказываться от apt-get?
Нет. apt-get остаётся доступным и пригоден для сценариев, где важно детерминированное поведение и совместимость со старыми скриптами.
Отличается ли поведение команд apt и apt-get по кодам возврата?
В большинстве случаев коды возврата совместимы, но формат вывода и интерактивные подсказки apt могут отличаться.
Можно ли блокировать пакет, чтобы apt не обновлял его?
Да: sudo apt-mark hold packagename. Для снятия блокировки используйте unhold.
Итог и рекомендации по использованию
- Для повседневной, интерактивной работы используйте apt: он быстрее, понятнее и удобнее.
- Для автоматизированных скриптов и сценариев с жёсткими требованиями к выводу тестируйте переход или временно сохраняйте apt-get.
- Всегда выполняйте резервное копирование и тесты на staging перед массовыми обновлениями.
Короткое резюме: apt упрощает жизнь, но не заставляет вас отказываться от проверенных инструментов — переходайте поэтапно и с тестированием.
Источник изображений: Brian A Jackson/Shutterstock
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента