DPKG(8)

ИМЯ
dpkg - среднеуровневый менеджер пакетов для Debian

СИНТАКСИС
dpkg [ключи] действие

ВНИМАНИЕ
Это руководство предназначено для пользователей, желающих понять ключи командной строки dpkg, а также состояния пакетов: здесь это описано более детально, чем в dpkg --help. Это руководство не следует использовать авторам пакетов, которые хотят понять, как dpkg будет устанавливать их пакеты. В частности, описание того, что делает dpkg, когда устанавливает и удаляет пакеты, частично неадекватно. Подробную информацию об этом можно найти в рубрике Система Управления Пакетами в debian-faq в системе GNU Info. Информация по созданию пакетов Debian находится в рубрике Средства Управления Пакетами Debian там же.

ОПИСАНИЕ
dpkg -- это инструмент среднего уровня для инсталляции, создания, удаления и управления пакетами Debian GNU/Linux. Основная и более дружественная оболочка для dpkg -- это dselect(8). dpkg управляется целиком через параметры командной строки, которые состоят из ровно одного действия и нуля или больше ключей. Параметр-действие говорит dpkg, что ему нужно сделать, а ключи так или иначе управляют выполнением действия. dpkg может также использоваться как интерфейс к dpkg-deb. Нижеследующие действия являются действиями dpkg-deb, и если они встречаются, то dpkg просто запускает dpkg-deb с указанными параметрами:
    -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
    Пакет помечен как 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  -p|--print-avail имя пакета
    Выводит детальную информацию о пакете, которую извлекает из файла /var/lib/dpkg/available.

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

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

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

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

dpkg -l | --list <образец имени пакета>...
    Показывает пакеты, соответствующие данному образцу. Если образец имени пакета не задан, показывает все пакеты в /var/lib/dpkg/available. В образце имени пакета можно указывать обычные символы шаблона командной оболочки. (Скорее всего, вам потребуется закавычить образец имени пакета, чтобы предотвратить подстановку имен файлов командной оболочкой. Например, dpkg -l 'libc5*' перечислит все имена пакетов, которые начинаются с "libc5".)

dpkg -s | --status <имя пакета>...
    Сообщает о статусе указанного пакета, просто показывая соответствующую запись из базы статусов установленных пакетов.

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

dpkg --get-selections [образец...]
    Выдает список состояний выбора пакетов.

dpkg --set-selections
    Задает список состояний выбора пакетов, принимая его со стандартного ввода.

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

dpkg -L | --listfiles <имя пакета> ...
    Показывает файлы, установленные на вашей системе из пакета с указанным именем. Заметьте, однако, что файлы, созданные установочными скриптами пакета, не будут показаны.

dpkg -S | --search <образец имени файла для поиска> ...
    Ищет в установленных пакетах файл по заданному образцу. В образце допустимы стандартные символы шаблонов командной оболочки.

dkpg --print-architecture
    Выдает архитектуру целевой системы (например, "i386"). Этот ключ использует программу gcc.

dpkg --print-gnu-build-architecture
    Выдает архитектуру целевой системы по версии GNU (например, "i486").

dpkg --print-installation-architecture
    Выдает архитектуру машины для инсталляции.

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 <каталог> [<имя файла>]
        Собирает пакет Debian GNU/Linux.
    dpkg -c | --contents <имя файла>
        Показывает содержимое пакета GNU/Linux.
    dpkg -e | --control <имя файла> [<каталог>]
        Извлекает контрольную информацию из пакета.
    dpkg -x | --extract <имя файла> <каталог>
        Извлекает файлы, содержащиеся в данном пакете.
    dpkg -f | --field  <имя файла> [управляющее-поле] ...
        Показывает управляющее(ие) поле(я) пакета.
    dpkg --fsys-tarfile <имя файла>
        Выдает на стандартный вывод tar-файл с файловой
        системой из указанного пакета Debian GNU/Linux.
    dpkg -I | --info <имя файла> [control-file]
        Выдает информацию о данном пакете.
    dpkg -X | --vextract <имя файла> <каталог>
        Извлекает и выдает имена файлов, содержащиеся в пакете.

КЛЮЧИ
Все ключи можно указывать как в командной строке, так и в конфигурационном файле dpkg -- /etc/dpkg/dpkg.cfg. Каждая строка в конфигурационном файле должна быть либо ключом (в точности как ключ командной строки, но без начальных дефисов), или же комментарием (если начинается с #).

--abort-after=<число>
    Задает количество ошибок, встретив которое, dpkg аварийно завершится. По умолчанию -- 50.

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

-Doctal | --debug=octal
    Включение отладки. octal -- это восьмеричное число, сформированное побитно из нижеуказанных битовых масок, (заметим, что эти величины могут быть изменены в следующих версиях). -Dh или --debug-help показывают эти отладочные значения. Маска Описание
        1 Основная полезная информация по ходу выполнения
        2 Вызов и состояния скриптов поддержки
       10 Вывод по каждому обработанному файлу
      100 Подробный вывод по каждому обработанному файлу
       20 Вывод по каждому конфигурационному файлу
      200 Подробный вывод по каждому конфигурационному файлу
       40 Зависимости и конфликты
      400 Подробное освещение зависимостей и конфликтов
     1000 Подробная ерунда, например о каталоге dpkg/info
     2000 Невероятное количество ерунды

--force-things | --no-force-things | --refuse-things
    Принудительно выполнять ( --force) или же отказываться выполнять ( --no-force или --refuse те или иные вещи (обозначенные как "things" -- список через запятую из нижеперечисленных элементов). --force-help выдает сообщение, описывающее эти сообщения. Элементы, обозначенные звездочкой (*), принудительно выполняются по умолчанию. Предупреждение: Эти флаги предназначены только для использования экспертами. Использование их без полного понимания их действия может нарушить работоспособность вашей системы. all: Включает (или выключает) все элементы. auto-select(*): Выбирает пакеты, чтобы установить их, и снимает выделение, чтобы удалить их. downgrade(*): Установить пакет, даже если уже установлена его более новая версия. configure-any: Настроить также распакованные, но не настроенные пакеты, от которых зависит текущий пакет. hold: Обрабатывать даже пакеты, помеченные как "hold". remove-reinstreq: Удалить пакет, даже если он побит и отмечен как требующий переустановки. Это может, например, привести к тому, что части пакета останутся в системе, а dpkg про них забудет. remove-essential: Удалить, даже если пакет важен (имеет приоритет "Essential"). Важные пакеты в основном содержат базовые команды unix. Удаление такого пакета может привести к потере работоспособности системы, так что используйте данный ключ с осторожностью. depends: Превратить проблемы с зависимостями в предупреждения, а не ошибки. depends-version: Не беспокоиться о версиях при проверке зависимостей. conflicts: Установит, даже если пакет конфликтует с другим пакетом. Это опасно, так как обычно приводит к перезаписи некоторых файлов. confnew: Если конфигурационный файл был изменен, всегда устанавливать новую версию без запроса подтверждения. confold: Если конфигурационный файл был изменен, всегда сохранять старую версию без запроса подтверждения. confdef: Если конфигурационный файл был изменен, всегда выбирать действие по умолчанию. Если такового нет, то спросить у пользователя, если не задан ключ --force-confnew или --force-confold (в этом случае соответствующий ключ используется для выяснения, что именно нужно делать). overwrite: Перезаписать файл из одного пакета файлом из другого пакета. overwrite-dir: Перезаписать каталог из одного пакета файлом из другого. overwrite-diverted: Перезаписать перенаправленный файл (diverted file) его неперенаправленной версией. architecture: Обрабатывать пакеты не с той архитектурой. bad-path: В путях поиска (переменной окружения PATH) отсутствуют важные программы, поэтому могут возникнуть проблемы. not-root: Попытаться установить или удалить пакет, даже если не суперпользователь.

--ignore-depends=<пакет>,...
    Игнорировать проверку зависимостей для заданных пакетов (на самом деле, проверка выполняется, но выдаются только лишь предупреждения о конфликтах и ничего более).

--new | --old
    Выбирает, соответственно, новый или старый формат пакета. Это ключ программы dpkg-deb(1).

--nocheck
    Не читать и не проверять содержимое файла control при создании пакета. Это ключ программы dpkg-deb(1).

--no-act
    Делать все, что необходимо, но не записывать на диск изменения. Это используется для того, чтобы посмотреть, что произошло бы при выполнении указанного действия, но при этом ничего не изменять. Убедитесь, что задали --no-act перед параметром-действие, или у вас могут получиться неожиданные результаты (например, dpkg --purge foo --no-act сперва выполнит полное удаление пакета foo, и затем будет пытаться полностью удалить пакет --no-act, несмотря на то, что вы ожидали).

-R | --recursive
    Рекурсивная обработка всех файлов, отвечающими шаблону *.deb, которые были найдены в заданных каталогах и во всех их подкаталогах. Этот флаг можно использовать вместе с действиями -i, -A, --install, --unpack, --avail.

-G  Не устанавливать пакет, если новая версия такого же пакета уже установлена. Это синоним флага --refuse-downgrade.

--root=dir | --admindir=dir | --instdir=dir
    Устанавливает каталоги по умолчанию. Каталог admindir по умолчанию равен /var/lib/dpkg и содержит много файлов, в которых дается информация о состояниях установленных или удаленных пакетов и т. д. Каталог instdir по умолчанию равен / и указывает каталог, куда будут установлены пакеты. Он также передается функции chroot(2) перед запуском скрипта установки пакета -- это означает, что скрипты будут считать instdir корневым каталогом. Задание каталога root устанавливает каталог instdir в значение dir, а каталога admindir -- в значение dir/var/lib/dpkgP.

-O | --selected-only
    Обрабатывать только пакеты, выбранные для установки. Такой выбор делается программой dselect или же самой программой dpkg, когда они обрабатывают соответствующий пакет. Например, когда пакет удаляется, он будет помечен для установки.

-E | --skip-same-version
    Не устанавливать пакет, если та же версия этого пакета уже установлена.

--status-fd <n>
    Выдает информацию о статусе пакета на файловый дескриптор <n>. Этот флаг можно задать несколько раз. Эта информация выдается в виде `status: <pkg>: <pkg qstate>'.

ФАЙЛЫ

/etc/dpkg/dpkg.cfg
    Файл конфигурации с ключами по умолчанию.

Остальные файлы перечислены с указанием их каталогов по умолчанию, см. ключ admindir, чтобы узнать, как изменить местоположение этих файлов.

/var/lib/dpkg/available
    Список доступных пакетов.

/var/lib/dpkg/status
    Состояния доступных пакетов. Этот файл содержит информацию о том, помечен ли пакет для удаления или нет, установлен он или нет, и т. д. См. главу ИНФОРМАЦИЯ О ПАКЕТАХ, где приведена подробная информация.

Нижеследующие файлы являются компонентами бинарного пакета. См. deb(5), там приведена подробная информация о них:

control

conffiles

preinst

postinst

prerm

postrm

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

DPKG_NO_TSTP
    Задайте этой переменной любое значение, если вы предпочитаете, чтобы dpkg при запуске командной оболочки не приостанавливала себя, а создавала новый процесс.

SHELL
    Программа, которую запустит dpkg при старте новой командной оболочки.

COLUMNS
    Задает количество колонок текста, используемых программой dpkg для отображения форматированного текста. В настоящий момент используется только ключом -l.

ПРИМЕРЫ
Чтобы перечислить пакеты, относящиеся к редактору vi:
dpkg -l '*vi*'
Чтобы посмотреть на записи о двух пакетах в файле /var/lib/dpkg/available:
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 --set-selections <myselections
Заметьте, что при этом ничего не будет ни установлено, ни удалено, просто будут заданы состояния выбора пакетов. Для того, чтобы на самом деле установить запрошенные пакеты, вам понадобится другая программа. Обычно dselect(8) предоставляет более удобный способ изменить состояния выбора пакетов.

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

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

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

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