Введение
При администрировании Debian и Ubuntu ключевым инструментом для взаимодействия с архивами .deb на фундаментальном уровне выступает утилита dpkg. В отличие от высокоуровневых менеджеров, она оперирует локальными файлами напрямую. В этой статье мы детально разберем практические приемы обращения с этой утилитой: от ручного развертывания софта и анализа структуры файлов до аудита статусов, корректного устранения сбоев зависимостей и бесследного удаления компонентов вместе с конфигурацией.
1. Подготовка тестового окружения и базовый аудит состояния ПО
Для безопасных экспериментов с пакетами выделим изолированный каталог в файловой системе, выполнив переход в него командой mkdir -p /tmp/dpkg-demo && cd /tmp/dpkg-demo.

Чтобы получить подопытный .deb-дистрибутив без немедленного внедрения в систему, загрузим файл пакета sl через пакетный менеджер с помощью конструкции apt-get update -qq && apt-get download -y sl.

Общий перечень зарегистрированного в ОС программного обеспечения формируется вызовом dpkg -l.
Флаг ii в первых колонках терминального вывода сигнализирует об успешной и целостной инсталляции. При необходимости выборку легко фильтровать с помощью утилит grep и head.
⚙️ [Справочник ключевых ключей]
-i (--install) : развертывание целевого файла .deb в операционной системе.-r (--remove) : деинсталляция бинарных файлов с сохранением пользовательских конфигураций.-P (--purge) : тотальная зачистка приложения вместе со всеми конфигурационными файлами.-l (--list) : вывод реестра установленных пакетов и текущих флагов их состояния.-s (--status) : подробная сводка о метаданных, версии и зависимостях инсталлированного компонента.-L (--listfiles) : генерация списка путей, развернутых в системе конкретным пакетом.-c (--contents) : предварительный просмотр содержимого несмонтированного архива .deb.-I (--info) : чтение управляющих полей и служебной информации из файла пакета до инсталляции.--unpack : извлечение файлов в файловую систему без запуска этапа конфигурирования.--configure : завершение настройки ранее распакованных, но не инициализированных пакетов.

Детальные сведения об установленной программе, включая точный номер релиза и архитектурные требования, запрашиваются через dpkg -s.
Строка Status: install ok installed служит прямым подтверждением того, что компонент прописан в базе данных dpkg без ошибок.

2. Инспекция метаданных и развертывание через dpkg -i
Убедимся, что терминальная сессия находится в рабочей директории с загруженным дистрибутивом, выполнив cd /tmp/dpkg-demo.

Перед установкой стороннего .deb-файла критически важно изучить его требования. Для отображения описания, списка совместимости и зависимостей служит dpkg -I.
Поля Package, Version и секция Depends позволяют заблаговременно определить, понадобятся ли для запуска софта дополнительные системные библиотеки.

Узнать, какие именно каталоги и файлы затронет распаковка архива, позволяет инструкция dpkg -c.
Анализ вывода наглядно демонстрирует размещение исполняемого файла (/usr/games/sl), справочных мануалов и вспомогательных директорий.

Прямая установка скачанного пакета запускается параметром dpkg -i.
В ходе работы утилита сначала распаковывает бинарники (Unpacking), а затем инициирует конфигурационные сценарии post-install (Setting up).

Для проверки работоспособности только что инсталлированной утилиты запустим бинарник: /usr/games/sl -a || true.

3. Инспекция файловой структуры и обратный поиск принадлежности компонентов
Когда требуется выяснить полный перечень файлов, внесенных в файловую иерархию конкретным пакетом, применяют опцию dpkg -L.
Команда выводит абсолютные пути ко всем установленным библиотекам, документам и исполняемым файлам (включая /usr/games/sl).

Если же перед вами лежит неизвестный файл и нужно установить, какой именно пакет принес его в систему, воспользуйтесь обратным поиском через dpkg -S.
Ответ вида sl: /usr/games/sl однозначно подтверждает владельца указанного бинарника.

При поиске через dpkg -S важно учитывать пути: символические ссылки база данных пакетов часто не распознает.
В современных дистрибутивах Ubuntu с механизмом UsrMerge директория /bin является ссылкой на /usr/bin. Поэтому запрос /bin/ls не вернет данных, тогда как канонический путь /usr/bin/ls корректно укажет на базовый пакет coreutils.

4. Деинсталляция программ (remove против purge) и восстановление зависимостей
Стандартная деинсталляция через dpkg -r удаляет исполняемые компоненты, но сознательно оставляет нетронутыми конфигурационные файлы в /etc.
Строка Removing sl подтверждает успешное извлечение бинарников программы из системы.

Если приложение нужно стереть без следа вместе с его конфигами, следует использовать режим полной очистки: dpkg -P.
Данный шаг гарантирует абсолютное удаление всех следов присутствия пакета и возврат системы к исходному состоянию.

В случаях, когда ручная установка через dpkg прерывается из-за нехватки системных библиотек, восстановить целостность репозитория помогает команда apt-get install -f -y.

По завершении всех тестов освободим ресурсы и сотрем временную тестовую папку командой rm -rf /tmp/dpkg-demo.

Мы изучили базовый низкоуровневый арсенал утилиты dpkg для манипуляций с пакетами .deb в среде Ubuntu.
Понимание этих механизмов позволяет системному администратору уверенно диагностировать проблемы с пакетами, анализировать установленный софт и поддерживать операционную систему в чистоте.