Manpages

ИМЯ

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 [AT] hsys.ru>.