Команда dpkg в linux

Обновлено: 02.07.2024

Это руководство не следует использовать сопровождающим пакетов, которые хотят понять, как dpkg будет устанавливать их пакеты. Описание того, что делает dpkg при установке и удалении пакетов особенно не полно.

ОПИСАНИЕ

dpkg is a tool to install, build, remove and manage Debian packages. The primary and more user-friendly front-end for dpkg is dselect (1). dpkg itself is controlled entirely via command line parameters, which consist of exactly one action and zero or more options. The action-parameter tells dpkg what to do and options control the behavior of the action in some way.

dpkg can be also be used as a front-end to dpkg-deb (1). The following are dpkg-deb actions, and if they are encountered, dpkg just runs dpkg-deb with the parameters given to it: Все эти действия описаны в dpkg-deb (1).

ИНФОРМАЦИЯ О ПАКЕТАХ

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

СОСТОЯНИЯ ПАКЕТА

installed Пакет распакован и успешно настроен. half-installed Установка пакета была запущена, но не закончена по какой-либо причине. not-installed Пакет в системе не установлен. unpacked Пакет распакован, но не настроен. half-configured Пакет распакован и настройка была запущена, но пока ещё не завершена по какой-либо причине. config-files В системе остались только конфигурационные файлы пакета.

ВЫБРАННЫЕ СОСТОЯНИЯ ПАКЕТА

install Пакет выбран для установки. deinstall Пакет выбран для удаления (т.е. будут удалены все файлы, кроме конфигурационных). purge Пакет выбран для полной очистки (т.е. будут удалены абсолютно все файлы, включая конфигурационные).

ФЛАГИ ПАКЕТА

hold Пакет помечен как зафиксированный и не обрабатывается dpkg , только если не указан параметр --force-hold . reinst-required Пакет, помеченный как reinst-required , является сломанным и требует переустановки. Такие пакеты не могут быть удалены, пока не указан параметр --force-reinstreq .

ДЕЙСТВИЯ

dpkg -i | --install имя файла пакета . Установить заданный пакет. Если указан параметр --recursive или -R , то вместо имени файла пакета должен быть указан каталог.

Установка состоит из следующих шагов:

1. Извлечение управляющих файлов нового пакета.

2. Если другая версия этого пакета была установлена ранее, то запускается сценарий prerm из старого пакета.

3. Запускается сценарий preinst , если он есть в пакете.

4. Распаковываются новые файлы, в тоже самое время сохраняя старые, чтобы если что-то пойдет не так, можно было их восстановить.

5. Если ранее была установлена другая версия этого пакета, то запускается сценарий postrm для старого пакета. Заметим, что этот сценарий запускается после сценария preinst нового пакета, потому что новые файлы записываются в то же самое время, когда удаляются старые.

6. Настройка пакета. Смотрите описание --configure , где приведена подробная информация об этом шаге. dpkg --unpack имя файла пакета . Распаковать пакет, но не настраивать. Если указан параметр --recursive или --R , то вместо имени файла пакета должен быть указан каталог. dpkg --configure имя пакета . | -a | --pending Повторно настроить распакованный пакет. Если вместо имени пакета задан параметр -a или --pending , то все распакованные, но не настроенные пакеты будут настроены.

Настройка состоит из следующих шагов:

1. Распаковка конфигурационных файлов, в то же самое время сохраняя старые конфигурационные файлы, чтобы можно было восстановить их, если что-то пойдет не так.

2. Запуск сценария postinst , если он есть в пакете. dpkg -r | --remove | -P | --purge имя пакета . | -a | --pending Удалить установленный пакет. Если указан параметр -r или --remove то удаляется всё, кроме конфигурационных файлов. Это позволяет избежать переконфигурации пакета, если он будет повторно установлен у будущем. (Конфигурационные файлы -- это те, что указаны в управляющем файле debian/confiles ). Если указан параметр -P или --purge то удаляется всё, включая конфигурационные файлы. Если вместо имени пакета задан параметр -a или --pending, то все распакованные пакеты, но отмеченные в файле /var/lib/dpkg/status для удаления или полной очистки, соответственно, удаляются или полностью очищаются.

Удаление пакета состоит из следующих шагов:

1. Запуск сценария prerm

2. Удаление установленных фалов

3. Запуск сценария postrm
dpkg --update-avail | --merge-avail I <файл Packages> Обновить информацию dpkg и dselect о доступных пакетах. Действие --merge-avail комбинирует старую информацию с информацией из файла Packages . Действие --update-avail перезаписывает старую информацию информацией из файла Packages . Файл Packages распространяется с Debian под именем Packages . dpkg хранит информацию о доступных пакетах в файле /var/lib/dpkg/available .

dpkg-query actions Смотрите dpkg-query (1) для более подробной информации о нижеследующих действиях.

ПАРАМЕТРЫ

Маска Описание
1 Основная полезная информация по ходу выполнения
2 Вызов и состояния скриптов поддержки
10 Вывод по каждому обработанному файлу
100 Подробный вывод по каждому обработанному файлу
20 Вывод по каждому конфигурационному файлу
200 Подробный вывод по каждому конфигурационному файлу
40 Зависимости и конфликты
400 Подробное освещение зависимостей и конфликтов
1000 Подробная ерунда, например о каталоге dpkg/info
2000 Невероятное количество ерунды --force- things | --no-force- things | --refuse- things

Предупреждение: Эти параметры предназначены только для использования экспертами. Использование без полного понимания их действия может нарушить работоспособность всей системы.

all : Turns on (or off) all force options.

downgrade (*): Установить пакет, даже если уже установлена его более новая версия.

Предупреждение: На данный момент dpkg не выполняет проверку зависимостей при переходе на более старую версию и поэтому не предупредит если это поломает зависимости с остальными пакетами. Это может иметь серьёзные последствия: замена на более старую версию системных компонентов первой необходимости может привести к полной неработоспособности системы. Использовать осторожно.

configure-any : Настроить также все распакованные, но ненастроенные пакеты, от которых зависит текущий пакет.

hold : Обрабатывать даже пакеты, помеченные как "зафиксированные".

remove-reinstreq : Удалить пакет, даже если он сломан и отмечен как требующий переустановки. Это может, например, привести к тому, что части пакета останутся в системе, а dpkg про них забудет.

remove-essential : Удалить, даже если это пакет первой необходимости (имеет приоритет "Essential"). Эти пакеты в основном содержат базовые команды Unix. Удаление такого пакета может привести к потере работоспособности системы, так что используйте данный параметр осторожно.

depends : Превратить проблемы с зависимостями в предупреждения.

depends-version : Не обращать внимание на версии при проверке зависимостей.

conflicts : Установить, даже если пакет конфликтует с другим пакетом. Это опасно, так как обычно приводит к перезаписи некоторых файлов.

confmiss : Всегда устанавливать пропущенный конфигурационный файл. Это опасно, так как не будут сохранены изменения (удаление) файла.

confnew : Если конфигурационный файл был изменён, то всегда устанавливать новую версию без запроса подтверждения, если не задан также параметр --force-confdef , при котором предпочтение отдаётся действию по умолчанию.

confold : Если конфигурационный файл был изменён, всегда сохранять старую версию без запроса подтверждения, если не задан также параметр --force-confdef , при котором предпочтение отдаётся действию по умолчанию.

confdef : Если конфигурационный файл был изменён, всегда выбирать действие по умолчанию. Если такового нет, то спросить у пользователя, если не задан параметр --force-confnew или --force-confold (в этом случае соответствующий параметр используется для выяснения, что именно нужно делать).

overwrite : Перезаписать файл из одного пакета файлом из другого пакета.

overwrite-dir : Перезаписать каталог из одного пакета файлом из другого.

overwrite-diverted : Перезаписать файл с изменённым расположением(diverted) его неизменённой версией.

architecture : Обрабатывать даже пакеты с неправильной архитектурой.

bad-path : В PATH отсутствуют важные программы, поэтому могут возникнуть проблемы.

not-root : Попытаться установить или удалить пакет, даже если не нет прав суперпользователя.

bad-verify : Устанавливать пакет, даже если он не прошёл проверку подлинности.

--ignore-depends = пакет . Игнорировать проверку зависимостей для указанных пакетов (на самом деле, проверка выполняется, но выдаются только предупреждения о конфликтах и ничего более). --new | --old Выбрать, соответственно, новый или старый формат пакета. Это параметр программы dpkg-deb (1). --nocheck Не читать и не проверять содержимое файла control при создании пакета. Это параметр программы dpkg-deb (1). --no-act | --dry-run | --simulate Делать всё, что необходимо, но не записывать на диск изменения. Он используется для того, чтобы посмотреть, что произошло бы при выполнении указанного действия, но при этом ничего не меняется.

Убедитесь, что указали --no-act перед действием, или у вас могут получиться нежелаемые результаты. (например, dpkg --purge foo --no-act сперва выполнит полное удаление пакета foo, а затем будет пытаться полностью удалить пакет --no-act, хотя вы ожидали, что ничего выполнено не будет) -R | --recursive Рекурсивная обработать все файлы, отвечающие шаблону *.deb , которые найдены в заданных каталогах и во всех их подкаталогах. Этот параметр можно использовать вместе с действиями -i , -A , --install , --unpack и --avail . -G Don't install a package if a newer version of the same package is already installed. This is an alias of --refuse-downgrade . --root= dir | --admindir= dir | --instdir= dir Change default directories. admindir defaults to /var/lib/dpkg and contains many files that give information about status of installed or uninstalled packages, etc. instdir defaults to / and refers to the directory where packages are to be installed. instdir is also the directory passed to chroot (2) before running package's installation scripts, which means that the scripts see instdir as a root directory. Changing root changes instdir to dir and admindir to dir /var/lib/dpkg . -O | --selected-only Обрабатывать только пакеты, выбранные для установки. Такой выбор делается программой dselect или же самой программой dpkg при работе с пакетами. Например, когда пакет удаляется, он будет помечен для удаления. -E | --skip-same-version Не устанавливать пакет, если та же версия этого пакета уже установлена. --status-fd <n> Send package status info to file descriptor <n> . This can be given multiple times. Status updates are of the form `status: <pkg>: <pkg state>'. Errors are reported as `status: <pkg>: error: extend-error-message'. Configuration file conflicts are reported as `status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited'. --log= имя файла Log status change updates and actions to filename , instead of the default /var/log/dpkg.log . If this option is given multiple times, the last filename is used. Log messages are of the form `YYYY-MM-DD HH:MM:SS status <state> <pkg> <installed-version>' for status change updates; `YYYY-MM-DD HH:MM:SS <action> <pkg> <installed-version> <available-version>' for actions where <action> is one of install, upgrade, remove, purge; and `YYYY-MM-DD HH:MM:SS conffile <filename> <decision>' for conffile changes where <decision> is either install or keep. --no-debsig Не пытаться проверять подпись пакета.

ФАЙЛЫ

/etc/dpkg/dpkg.cfg Файл конфигурации с параметрами по умолчанию. /var/log/dpkg.log Файл журнала по умолчанию (смотрите /etc/dpkg/dpkg.cfg (5) и параметр --log ). Остальные файлы перечислены с указанием их каталогов по умолчанию, смотрите параметр admindir , чтобы узнать, как изменить местоположение этих файлов. /var/lib/dpkg/available Список доступных пакетов. /var/lib/dpkg/status Состояния доступных пакетов. Этот файл содержит информацию о том, помечен ли пакет для удаления или нет, установлен он или нет, и т.д. Смотрите раздел ИНФОРМАЦИЯ О ПАКЕТАХ , где приведена подробная информация. Нижеследующие файлы являются компонентами бинарного пакета. Смотрите deb (5), где приведена подробная информация: control conffiles preinst postinst prerm postrm

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

DPKG_NO_TSTP Если она определена, то dpkg при запуске оболочки не приостанавливает себя, а создаёт новый процесс. SHELL The program dpkg will execute when starting a new shell. COLUMNS Задаёт количество колонок текста, используемых программой dpkg при форматировании текста. В настоящий момент используется только с параметром -l .

ПРИМЕРЫ

To list packages related to the editor vi (1):

To see the entries in /var/lib/dpkg/available of two packages:

dpkg --print-avail elvis vim | less

Вручную просмотреть список пакетов:

Удалить установленный пакет elvis:

Чтобы установить пакет, сначала нужно найти его в архиве или на CDROM. Файл "available" показывает, что пакет vim находится в секции "editors" ("редакторы"):

cd /cdrom/hamm/hamm/binary/editors
dpkg -i vim_4.5-3.deb

Получить локальную копию состояний выбранных пакетов:

dpkg --get-selections >myselections

Вы можете перенести этот файл на другой компьютер и установить его там с помощью:

dpkg --clear-selections
dpkg --set-selections <myselections

Заметим, что при этом ничего не будет ни установлено, ни удалено, просто будут заданы состояния запрошенных пакетов. Для того, чтобы на самом деле скачать и установить запрошенные пакеты, вам понадобится другая программа. Например, запустите dselect и выберите "Установить".

Обычно dselect (8) предоставляет более удобный способ изменить состояния выбранных пакетов.

Операционная система Debian Linux, является прародителем для целого ряда различных дистрибутивов linux, таких как Knoppix, Kali, Ubuntu, Mint, и т.д. Дистрибутивы linux на базе Debian, используют различные инструменты для работы с пакетами, такие как: dpkg, apt, aptitude, synaptic, tasksel, deselect, dpkg-deb и dpkg-split. Коротко о каждом из них:
  • Apt - Advanced Package Tool. Данный инструмент работает с deb архивами из источников, указанных в файле конфигурации /etc/apt/sources.list.

1. Dpkg, установка пакета

Для установки .deb пакета используется ключ -i:

2. Dpkg, список установленных пакетов

Что-бы посмотреть установленные пакеты, используется ключ -l: Что-бы узнать установлен-ли конкретный пакет, нужно указать его имя:

3. Dpkg, удалить пакет

Для удаления .deb пакета используется ключ -r (remove) с указанием имени пакета, например "flashpluginnonfree", полное название "flashplugin-nonfree_3.2_i386.deb", указывать не обязательно. Ключ -r позволяет удалить только сам пакет, что-бы удалить пакет вместе с файлами конфигурации, вместо -r, используйте ключ -P (purge):

4. Dpkg, посмотр содержимого пакета

Что-бы посмотреть содержимое пакета, используется ключ -c (content):

5. Dpkg, проверить, установлен пакет или нет

Для этого используется ключ -s (status)

6. Dpkg, куда установлены файлы пакета

Что-бы посмотреть расположение, установленных пакетом файлов, используйте ключ -L:

7. Dpkg, установить все пакеты из конкретной директории

Что-бы рекурсивно обойти указанную директорию и ее поддиректории, устанавливая все файлы *.deb, используйте ключи -R и --install. Следующая команда установит все *.deb файлы из директории debpackages:

8. Dpkg, распаковать пакет, не конфигурируя его

Для распаковки пакета используется опция --unpack, при этом не будет выполняться конфигурирование или установка:

9. Dpkg, конфигурирование распакованного пакета

Опция --onfigure выполнит переконфигурацию уже распакованного пакета

10. Dpkg, обновить информации о доступности пакета

Опция --update-avail обновляет устаревшую информацию о доступности пакета в файле пакетов:

11. Dpkg, удаление информации о доступности пакетов

Опция --clear-avaial удалит текущую информацию о доступности пакетов

12. Dpkg, забыть удаленные и неиспользуемые пакеты

Что-бы система "забыла" удаленные и неиспользуемые пакеты, служит опция --forget-old-unavail:

Читайте также: