Введение в управление состоянием пакетов
При администрировании серверов на базе Ubuntu нередко возникает задача защитить критически важные компоненты от незапланированного обновления или оптимизировать дерево установленных библиотек. Утилита apt-mark предоставляет инженеру полный контроль над жизненным циклом приложений: с ее помощью можно жестко зафиксировать (hold) нужную версию ПО, предотвратив сбои в продакшене при выполнении регламентных обновлений, а также гибко разграничить автоматически подтянутые зависимости и пакеты, инсталлированные вручную. В данном руководстве на практических примерах рассматриваются ключевые приемы безопасного обслуживания пакетной базы.
Запрет обновлений: фиксация пакета через hold и аудит статуса
Для демонстрации механизма блокировки развернем тестовое окружение. Сначала синхронизируем локальные индексы репозиториев и установим утилиту передачи данных curl, выполнив команду sudo apt-get update -qq && sudo apt-get install -y curl.

Чтобы оградить установленную программу от вмешательства пакетного менеджера при выполнении последующих процедур вроде apt upgrade, применим команду sudo apt-mark hold curl. Данная директива переводит выбранное ПО в статус заморозки, исключая его из любых плановых обновлений дистрибутива.
⚙️ [Справочник базовых подкоманд]
hold : блокирует пакет от автоматического обновления новыми версиями.unhold : снимает блокировку, возвращая пакету возможность штатной модернизации.showhold : выводит полный перечень заблокированных на текущий момент пакетов.auto : маркирует пакет как автоматическую зависимость, установленную вспомогательно.manual : помечает пакет как явно инсталлированный системным администратором.showauto : генерирует список всех пакетов, имеющих статус автоматических зависимостей.showmanual : отображает перечень приложений, установленных вручную.

Для контроля текущего состояния системы воспользуемся командой apt-mark showhold. Она опрашивает базу данных APT и возвращает список всех заблокированных компонентов.
В выводе терминала отобразится curl, подтверждая, что предохранитель успешно активирован.

Снятие ограничений: возврат к штатному обновлению с unhold
Когда необходимость в заморозке отпадает (например, проведено тестирование совместимости нового релиза), статус пакета возвращается в исходное состояние командой sudo apt-mark unhold curl.
Успешное завершение операции подтверждается системным уведомлением Canceled hold on curl., свидетельствующим о снятии блокировочного флага.

Убедимся в отсутствии активных ограничений, повторно запросив список удерживаемых пакетов через apt-mark showhold.
Терминал не вернет никаких записей — это гарантирует, что curl вновь будет обрабатываться стандартными процедурами обновления.

Контроль зависимостей: манипуляции флагами markauto и unmarkauto
Для изучения механизмов очистки и переключения метаданных инсталляции установим консольный JSON-парсер jq, вызвав sudo apt-get install -y jq.

Команда sudo apt-mark markauto jq переопределяет статус пакета: система начинает воспринимать его не как самостоятельное ПО, а как сопутствующую зависимость.
Практическая польза такой настройки заключается в том, что при удалении родительских пакетов данный компонент будет автоматически удален из ОС при выполнении apt autoremove, не захламляя накопитель.

Верифицировать присвоенный статус позволяет команда apt-mark showauto jq.
Появление имени jq в консоли свидетельствует о том, что пакет успешно переведен в категорию зависимостей (auto).

Если требуется гарантировать сохранность программы в системе независимо от других пакетов, статус возвращают к ручному с помощью sudo apt-mark unmarkauto jq.
После этого компонент будет защищен от случайного удаления через apt autoremove, даже если ни один другой сервис больше на него не ссылается.

Подтвердим возврат в основную категорию вызовом apt-mark showmanual jq.
Присутствие jq в ответе терминала подтверждает, что статус ручной инсталляции полностью восстановлен.

Диагностика и аудит системных списков пакетов
Чтобы оценить состав программного обеспечения, добавленного администратором, вызовем команду apt-mark showmanual | head -n 10, выводящую первые десять записей из списка явно установленных программ.
Среди базовых утилит дистрибутива здесь отобразится ранее добавленный пакет curl.

С обратной задачей — получением перечня библиотек и модулей, подтянутых пакетным менеджером автоматически — справляется команда apt-mark showauto | head -n 10.
Такая выборка демонстрирует служебные зависимости и разделяемые библиотеки, находящиеся под автоматическим контролем APT.

Грамотное применение инструментария apt-mark позволяет системному администратору точно регулировать процессы обновления и поддерживать идеальный порядок в зависимостях Ubuntu, предотвращая нештатные падения сервисов из-за конфликта версий.