dpkg(1)

НАЗВАНИЕ
dpkg -- менеджер пакетов Debian

СИНТАКСИС
dpkg [параметры] действие

ПРЕДУПРЕЖДЕНИЕ
Это руководство предназначено для пользователей, желающих более подробно ознакомиться с параметрами командной строки dpkg и состояниями пакетов: здесь это описано более детально, чем в dpkg --help. Это руководство не следует использовать сопровождающим пакетов, которые хотят понять, как 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:
    -b, --build,
    -c, --contents,
    -I, --info,
    -f, --field,
    -e, --control,
    -x, --extract,
    -X, --vextract и
    --fsys-tarfile.
Все эти действия описаны в 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. Для упрощения процедуры получения и обновления файла available можно использовать команду dselect update.

dpkg -A | --record-avail имя файла пакета ...
    Обновить информацию dpkg и dselect о доступных пакетах информацией из пакета имя файла пакета. Если задан параметр --recursive или -R, то вместо имени файла пакета должен быть указан каталог.

dpkg --forget-old-unavail
    Забыть о неустановленных недоступных пакетах.

dpkg --clear-avail
    Очистить имеющуюся информацию о том, какие пакеты доступны.

dpkg -C | --audit
    Найти пакеты, которые были установлены в системе только частично. dpkg посоветует, что делать, чтобы восстановить их работоспособность.

dpkg --get-selections [шаблон имени пакета...]
    Get list of package selections, and write it to stdout. Without a pattern, packages marked with state purge will not be shown.

dpkg --set-selections
    Установить список выбранных пакетов, принимая его со стандартного ввода. Этот файл должен быть в формате '<пакет> <состояние>', где состоянием может быть install, hold, deinstall или purge. Допускаются пустые строки и строки комментариев (начинающиеся с #).

dpkg --clear-selections
    Set the requested state of every non-essential package to deinstall. This is intended to be used immediately before --set-selections, to deinstall any packages not in list given to --set-selections.

dpkg --yet-to-unpack
    Найти пакеты, выбранные для установки, но по какой-то причине ещё не установленные.

dpkg --print-architecture
    Print architecture of packages dpkg installs (for example, "i386").

dpkg --compare-versions ver1 op ver2
    Сравнить номера версий, используя op в качестве бинарного оператора. dpkg возвращает код успешного завершения (нуль), если указанное условие удовлетворяется, или неудачу (не-нуль) в противном случае. Есть две группы операторов, которые работают по-разному при отсутствующем параметре ver1 или ver2. Операторы lt le eq ne ge gt считают отсутствующий номер версии более ранним, чем любой другой. Операторы lt-nl le-nl ge-nl gt-nl считают отсутствующий номер версии более поздним, чем любой другой. Операторы < << <= = >= >> > используются только для совместимости с синтаксисом файла control.

dpkg --command-fd <n>
    Принимает серию команд из входного файлового дескриптора <n>. Замечание: дополнительные параметры, заданные в командной строке, а также через этот дескриптор, не сбрасываются для последующих команд, выполняющихся далее в этом запуске.

dpkg --help
    Вывести небольшую подсказку.

dpkg --force-help
    Вывести подсказку о параметрах --force-что-нибудь.

dpkg -Dh | --debug=help
    Вывести подсказку о параметрах отладки.

dpkg --licence | dpkg --license
    Показать лицензию dpkg.

dpkg --version
    Показать информацию о версии dpkg.

dpkg-deb actions
    Смотрите dpkg-deb(1) для более подробной информации о нижеследующих действиях.
    dpkg -b | --build каталог [имя файла]
        Собирает deb пакет.
    dpkg -c | --contents имя файла
        Показывает содержимое deb пакета.
    dpkg -e | --control имя файла [каталог]
        Извлекает управляющую информацию из пакета.
    dpkg -x | --extract имя файла <каталог>
        Извлекает файлы, содержащиеся в данном пакете.
    dpkg -f | --field  имя файла [управляющее-поле] ...
        Показывает управляющее(ие) поле(я) пакета.
    dpkg --fsys-tarfile имя файла
        Выдает на стандартный вывод tar-файл с файловой
        системой из указанного пакета Debian.
    dpkg -I | --info имя файла [файл control]
        Выдает информацию о данном пакете.
    dpkg -X | --vextract имя файла каталог
        Извлекает и выдает имена файлов, содержащиеся в пакете.

dpkg-query actions
    Смотрите dpkg-query(1) для более подробной информации о нижеследующих действиях.
    dpkg -l | --list  шаблон имени пакета ...
        Показывает пакеты, соответствующие данному шаблону.
    dpkg -s | --status  имя пакета ...
        Сообщает о состоянии указанного пакета.
    dpkg -L | --listfiles имя пакета ...
        Показывает файлы, установленные в системе из пакета с указанным именем.
    dpkg -S | --search шаблон имени файла ...
        Ищет в установленных пакетах имя файла по заданному шаблону.
    dpkg -p | --print-avail I <имя пакета>
        Выводит детальную информацию о пакете, которую извлекает
        из файла /var/lib/dpkg/available.

ПАРАМЕТРЫ
Все параметры можно указывать как в командной строке, так и в конфигурационном файле dpkg -- /etc/dpkg/dpkg.cfg. Каждая строка в конфигурационном файле должна быть либо параметром (в точности как в командной строке, но без начальных дефисов), либо комментарием (если начинается с #).

--abort-after=число
    Change after how many errors dpkg will abort. The default is 50.

-B|--auto-deconfigure
    При удалении пакета есть вероятность, что есть другой установленный пакет зависящий от удаляемого пакета. Указание этого параметра приведёт к автоматической деконфигурации пакета, который зависит от удаляемого пакета.

-Doctal | --debug=octal
    Switch debugging on. octal is formed by bitwise-orring desired values together from the list below (note that these values may change in future releases). -Dh or --debug=help display these debugging values. Маска Описание
        1 Основная полезная информация по ходу выполнения
        2 Вызов и состояния скриптов поддержки
       10 Вывод по каждому обработанному файлу
      100 Подробный вывод по каждому обработанному файлу
       20 Вывод по каждому конфигурационному файлу
      200 Подробный вывод по каждому конфигурационному файлу
       40 Зависимости и конфликты
      400 Подробное освещение зависимостей и конфликтов
     1000 Подробная ерунда, например о каталоге dpkg/info
     2000 Невероятное количество ерунды

--force-things | --no-force-things | --refuse-things
    Принудительно выполнять или же отказываться выполнять (no-force и --refuse означают одно и то же) те или иные вещи. things -- это список через запятую элементов описанных далее). --force-help выдает сообщение, описывающие их. Элементы, обозначенные звёздочкой (*), принудительно выполняются по умолчанию. Предупреждение: Эти параметры предназначены только для использования экспертами. Использование без полного понимания их действия может нарушить работоспособность всей системы. 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):
     dpkg -l '*vi*'
To see the entries in /var/lib/dpkg/available of two packages:
     dpkg --print-avail elvis vim | less
Вручную просмотреть список пакетов:
     less /var/lib/dpkg/available
Удалить установленный пакет elvis:
     dpkg -r 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) предоставляет более удобный способ изменить состояния выбранных пакетов.

ДОПОЛНИТЕЛЬНАЯ ФУНКЦИОНАЛЬНОСТЬ
Дополнительная функциональность может быть получена установкой любых следующих пакетов: apt, aptitude и debsums.

СМОТРИТЕ ТАКЖЕ
dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5) и dpkg-reconfigure(8).

ОШИБКИ РЕАЛИЗАЦИИ
--no-act обычно дает меньше информации, чем могло бы быть полезным.

АВТОРЫ
Смотрите файл /usr/share/doc/dpkg/THANKS, где приведён список тех, кто участвовал в разработке dpkg.

ПЕРЕВОД
Это руководство перевел с английского Виктор Вислобоков (2:5054/8.34@FidoNet). Обновление и корректура: Alexey Mahotkin <alexm@hsys.msk.ru>.