ИМЯ
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>.