Linux

dpkg: полное руководство по управлению пакетами в Ubuntu/Debian

Этот гайд объясняет, как использовать стандартную утилиту dpkg для базовых операций с пакетами в дистрибутивах на базе Debian. Вы научитесь устанавливать, удалять, запрашивать информацию о пакетах и решать частые проблемы.

Обновлено 16 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Debian 12/11Ubuntu 22.04/24.04Linux Mint 21/22

Введение / Зачем это нужно

dpkg — это низкоуровневый менеджер пакетов, который является основой систем управления пакетами в дистрибутивах на базе Debian (Debian, Ubuntu, Linux Mint и др.). В то время как apt и apt-get удобны для работы с репозиториями, dpkg незаменим для ручной установки локальных файлов .deb, детального просмотра состояния пакетов и решения сложных проблем с зависимостями. Этот гайд покрывает основные операции, которые понадобятся каждому администратору или进阶-пользователю Linux.

Требования / Подготовка

  1. Дистрибутив на базе Debian: Инструкция актуальна для Debian, Ubuntu, Linux Mint и их производных.
  2. Права суперпользователя: Большинство операций (-i, -r, -P) требуют прав sudo.
  3. Локальный файл .deb: Для шага установки вам понадобится скачанный файл пакета (например, с официального сайта проекта).
  4. Базовое знакомство с терминалом: Умение навигации (cd, ls) и редактирования команд.

Шаг 1: Проверка наличия и версии dpkg

Хотя dpkg почти всегда предустановлен, полезно убедиться в его наличии и узнать версию.

dpkg --version

Ожидаемый вывод (пример):

Debian `dpkg` package management program version 1.22.0 (amd64).

Если команда не найдена, установите пакет dpkg через менеджер вашего дистрибутива (например, sudo apt update && sudo apt install dpkg).

Шаг 2: Установка пакета из локального файла .deb

Это основная операция для установки программ, которых нет в официальных репозиториях, или для установки конкретной версии.

  1. Перейдите в каталог с загруженным файлом (например, ~/Downloads).
  2. Выполните установку:
sudo dpkg -i имя_файла.deb
  • -i (install) — ключевой флаг.
  • Важно: dpkg не разрешает зависимости автоматически. Если пакет требует другие библиотеки или программы, установка завершится с ошибкой. В этом случае перейдите к шагу 6 для исправления.

Пример:

cd ~/Downloads
sudo dpkg -i google-chrome-stable_current_amd64.deb

Шаг 3: Удаление пакета

Удаление через dpkg более «грубое», чем через apt, но позволяет точно контролировать процесс.

  • Удаление пакета (оставляет конфиги):
    sudo dpkg -r package_name
    
    • -r (remove) — удаляет binaries и данные пакета, но сохраняет конфигурационные файлы в /etc/. Это полезно, если вы планируете переустановить пакет с теми же настройками.
  • Полное удаление (удаляет конфиги):
    sudo dpkg -P package_name
    
    • -P (purge) — удаляет всё, включая конфиги. Используйте с осторожностью, настройки будут потеряны безвозвратно.

Пример:

sudo dpkg -r nginx
# или
sudo dpkg -P nginx

Шаг 4: Просмотр информации об установленных пакетах

dpkg предоставляет несколько способов получить информацию.

  • Список всех установленных пакетов:
    dpkg -l
    

    Вывод очень длинный. Для фильтрации используйте grep:
    dpkg -l | grep -i python
    
  • Подробная информация о конкретном пакете:
    dpkg -s package_name
    

    Покажет статус, версию, описание, зависимости, размеры и другие метаданные.
  • Список файлов, установленных пакетом:
    dpkg -L package_name
    

    Полезно, чтобы понять, куда именно пакет себя «разложил».
  • Поиск пакета по файлу:
    dpkg -S /путь/к/файлу
    

    Ответит на вопрос «Какому пакету принадлежит этот файл?».

Пример:

dpkg -s curl
dpkg -S /usr/bin/curl

Шаг 5: Проверка целостности пакетов

Если вы подозреваете, что файлы системы были изменены (например, после взлома или сбоя), можно проверить, соответствуют ли они пакетной базе.

sudo dpkg -V package_name
  • Без имени пакета проверит все установленные пакеты (это может занять много времени).
  • В выводе символы в первых 5 колонках указывают на изменения (например, 5 — изменение контрольной суммы, M — изменение режима доступа). Пустые колонки означают, что файл не изменился.

Шаг 6: Решение проблем с зависимостями (частый кейс)

Самая частая ошибка при использовании dpkg -i:

dpkg: dependency problems prevent configuration of package_name

Это значит, что пакет требует другие пакеты, которые ещё не установлены.

Решение: Используйте apt, который умеет автоматически находить и устанавливать недостающие зависимости из репозиториев.

sudo apt --fix-broken install

Эта команда проанализирует сломанные зависимости и установит недостающие пакеты. После её успешного выполнения можно снова попробовать sudo dpkg -i имя_файла.deb или просто перейти к следующему шагу — apt часто сам донастраивает пакет после исправления зависимостей.

Принудительная переконфигурация: Если пакет установлен, но не настроен (статус rc), выполните:

sudo dpkg --configure -a

Шаг 7: Работа с пакетами в режиме «только для чтения» (extract)

Иногда нужно просто извлечь файлы из .deb архива без установки в систему (например, для просмотра скриптов).

  1. Создайте временный каталог.
  2. Распакуйте архив ar (формат .deb — это архив ar):
    mk temp_dir && cd temp_dir
    ar xx /путь/к/package.deb
    
  3. Извлеките содержимое data.tar.xz (или data.tar.gz):
    tar -xf data.tar.xz
    

Теперь все файлы пакета будут в текущей директории.

Проверка результата

После выполнения основных операций проверьте результат:

  • После установки: dpkg -l | grep имя_пакета (статус должен быть ii).
  • После удаления: dpkg -l | grep имя_пакета (статус должен быть rc или пакет не выводиться).
  • После исправления зависимостей: Убедитесь, что команда sudo apt --fix-broken install завершилась без ошибок.
  • Проверьте работоспособность программы: Запустите её (например, nginx -v или google-chrome --version).

Возможные проблемы

  • Ошибка «dpkg: error: parsing file '/var/lib/dpkg/status' near line X...»
    • Причина: Повреждённая база данных пакетов.
    • Решение: Восстановите резервную копию: sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status. Если бэкапа нет, попробуйте пересоздать пустой файл: echo "Package: status\ndpkg" | sudo tee /var/lib/dpkg/status (осторожно, это сбросит историю установки).
  • «dpkg: warning: package not marked as conffile, but configuration file found: ...»
    • Причина: Файл конфигурации (conffile) был изменён вручную, а пакет пытается его перезаписать.
    • Решение: Либо сохраните вашу версию файла, либо позвольте dpkg установить версию из пакета (при обновлении). Используйте dpkg-divert, если нужно сохранить кастомный файл.
  • Пакет «завис» в состоянии «half-installed» или «half-configured»
    • Решение: Принудительно удалите проблемный пакет: sudo dpkg --remove --force-remove-reinstreq package_name, а затем очистите зависимости через sudo apt --fix-broken install.
  • Нет прав на файл в каталоге установки
    • Причина: Попытка установить пакет в системный каталог без sudo.
    • Решение: Всегда используйте sudo для операций записи (-i, -r, -P).

Дополнительные возможности (кратко)

  • dpkg-reconfigure package_name — повторно запускает скрипт настройки пакета (полезно после изменения конфига или при ошибках конфигурации).
  • dpkg --get-selections — выводит список всех пакетов с их статусом (install, hold, deinstall). Можно сохранить в файл для бэкапа.
  • dpkg --set-selections < file — восстанавливает выбор пакетов из файла, созданного --get-selections.
  • dpkg -C — проверяет целостность файловой системы пакетов, ищет недостающие или повреждённые файлы.

Заключение

Вы освоили базовый, но критически важный инструмент — dpkg. Помните: для повседневной работы с репозиториями используйте apt, а dpkg оставьте для ручной установки .deb файлов, детального аудита и решения сложных проблем с пакетами. Всегда проверяйте зависимости после ручной установки командой sudo apt --fix-broken install.

Часто задаваемые вопросы

В чём разница между dpkg и apt?
Как исправить ошибку 'dpkg: error processing package ... (--configure): dependency problems prevent configuration'?
Можно ли использовать dpkg для удаления конфигурационных файлов пакета?
Как узнать, какой пакет установил конкретный файл?

Полезное

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