dpkg - менеджер пакетов для Debian
СИНТАКСИС
dpkg [опция...] команда
ПРЕДУПРЕЖДЕНИЕ
Это руководство предназначено для пользователей, желающих более подробно понять параметры командной строки dpkg и состояния пакетов, чем это представлено в dpkg --help.
Его не следует использовать разработчикам пакетов, желающим понять, как dpkg будет устанавливать их пакеты. Описания того, что делает dpkg при установке и удалении пакетов, особенно неполны.
ОПИСАНИЕ
dpkg — это инструмент среднего уровня для установки, сборки, удаления и управления пакетами Debian. Основным и более удобным интерфейсом для dpkg является [apt]({filename}../../apt)(8) в качестве интерфейса командной строки (CLI) и aptitude(8) в качестве интерфейса терминала (TUI). Сам dpkg управляется исключительно параметрами командной строки, которые состоят из одной команды и нуля или более опций. Параметр команды указывает, что dpkg должен делать, а опции контролируют поведение команды.
dpkg также можно использовать как интерфейс для dpkg-deb(1) и dpkg-query(1). Список поддерживаемых команд можно найти в разделе КОМАНДЫ. Если встречается какая-либо из этих команд, dpkg просто запускает dpkg-deb или dpkg-query с переданными параметрами, но какие-либо конкретные опции в настоящее время им не передаются. Чтобы использовать какие-либо из этих опций, необходимо вызывать базовые программы напрямую.
ИНФОРМАЦИЯ О ПАКЕТАХ
dpkg хранит некоторую полезную информацию о доступных пакетах. Информация разделена на три класса: состояния, состояния выбора и флаги. Эти значения предназначены для изменения в основном с помощью dselect.
Состояния пакетов
не установлен
Пакет не установлен в вашей системе.
файлы конфигурации
В системе существуют только файлы конфигурации или скрипт postrm и данные, необходимые для его удаления.
частично установлен
Установка пакета была начата, но по какой-то причине не завершена.
распакован
Пакет распакован, но не настроен.
частично настроен
Пакет распакован, и настройка была начата, но по какой-то причине еще не завершена.
ожидает триггеров
Пакет ожидает обработки триггеров другим пакетом.
триггеры в ожидании
Триггеры пакета были активированы.
установлен
Пакет правильно распакован и настроен.
Состояния выбора пакетов
установить
Пакет выбран для установки.
удержать
Пакет, помеченный как "удерживаемый", остается на той же версии, то есть автоматическая установка, обновление или удаление не выполняются, если только эти действия не запрошены явно или не разрешены для автоматического выполнения с помощью опции --force-hold.
deinstall
Пакет выбран для деинсталляции (т.е. мы хотим удалить все файлы, кроме файлов конфигурации).
purge
Пакет выбран для полной очистки (т.е. мы хотим удалить все из системных каталогов, даже файлы конфигурации).
unknown
Состояние пакета неизвестно. Пакет, который также находится в не установленном состоянии, и с флагом «ok», будет удален при следующем сохранении базы данных.
Флаги пакетов
ok Пакет, отмеченный как «ok», находится в известном состоянии, но может потребовать дальнейшей обработки.
reinstreq
Пакет, отмеченный как «reinstreq», поврежден и требует переустановки. Такие пакеты не могут быть
удалены, если не использовать опцию --force-remove-reinstreq.
КОМАНДЫ
-i, --install package-file...
Установить пакет. Если указана опция --recursive или -R, package-file должен указывать на каталог.
Установка состоит из следующих шагов:
Извлечение файлов управления нового пакета.
Если ранее была установлена другая версия того же пакета, выполнить
скрипт prerm старого пакета.
Запустить скрипт preinst, если он предоставлен пакетом.
Распаковать новые файлы и одновременно создать резервные копии старых файлов, чтобы в случае
возникновения проблем их можно было восстановить.
Если ранее была установлена другая версия того же пакета, выполнить
скрипт postrm старого пакета. Обратите внимание, что этот скрипт выполняется после
скрипта preinst нового пакета, поскольку новые файлы записываются одновременно со
удалением старых файлов.
Настроить пакет. Подробную информацию о том, как это делается, см. в разделе --configure.
--unpack package-file...
Распаковать пакет, но не настраивать его. Если указана опция --recursive или -R, package-file должен указывать на каталог.
Будут обработаны триггеры для Pre-Depends, если не указана опция --no-triggers.
--configure package...|-a|--pending
Настроить пакет, который был распакован, но еще не настроен. Если вместо package указано -a или --pending, будут настроены все распакованные, но ненастроенные пакеты.
Чтобы перенастроить пакет, который уже был настроен, попробуйте использовать команду dpkg-reconfigure(8) (которая является частью проекта debconf).
Настройка состоит из следующих шагов:
Распаковать файлы конфигурации и одновременно создать резервные копии старых файлов конфигурации, чтобы их можно было
восстановить в случае возникновения проблем.
Запустить скрипт postinst, если он предоставлен пакетом.
Будут обработаны триггеры, если не указана опция --no-triggers.
--triggers-only package...|-a|--pending
Обрабатывает только триггеры (начиная с dpkg 1.14.17). Все ожидающие триггеры будут обработаны. Если указаны имена пакетов, будут обработаны только триггеры этих пакетов, ровно один раз каждый, когда это необходимо. Использование этой опции может привести к тому, что пакеты будут находиться в неправильном состоянии «ожидание триггеров» и «триггеры в ожидании». Это можно исправить позже, запустив: dpkg --configure --pending.
-r, --remove package...|-a|--pending
Удаляет установленный пакет. Это удаляет все, кроме файлов конфигурации и других данных, которые
очищаются скриптом postrm, что может избавить от необходимости перенастройки пакета при его
повторной установке (файлы конфигурации — это файлы конфигурации, перечисленные в файле
DEBIAN/conffiles control). Если файла DEBIAN/conffiles control или скрипта DEBIAN/postrm нет,
эта команда эквивалентна вызову --purge. Если вместо имени пакета указаны -a или --pending, то
удаляются все пакеты, распакованные, но помеченные для удаления в файле /var/lib/dpkg/status.
Удаление пакета состоит из следующих шагов:
Запуск скрипта prerm.
Удаление установленных файлов.
Запуск скрипта postrm.
Обрабатываются триггеры, если не указан параметр --no-triggers.
-P, --purge package...|-a|--pending
Очищает установленный или уже удаленный пакет. Это удаляет все, включая файлы конфигурации
и все, что было очищено скриптом postrm. Если вместо имени пакета указаны -a или --pending, то
очищаются все пакеты, распакованные или удаленные, но помеченные для очистки в файле
/var/lib/dpkg/status.
Примечание: некоторые файлы конфигурации могут быть неизвестны dpkg, потому что они создаются и
управляются отдельно с помощью скриптов конфигурации. В этом случае dpkg не удаляет их самостоятельно,
но скрипт postrm пакета (который вызывается dpkg) должен позаботиться об их удалении во время очистки.
Конечно, это относится только к файлам в системных каталогах, а не к файлам конфигурации,
записанным в домашние каталоги отдельных пользователей.
Очистка пакета состоит из следующих шагов:
Удаление пакета, если он еще не удален. Подробную информацию о том, как это делается,
см. в разделе --remove.
Запуск скрипта postrm.
Обрабатываются триггеры, если не указан параметр --no-triggers.
-V, --verify [package-name...]
Проверяет целостность package-name или всех пакетов, если параметр не указан, путем сравнения
информации из файлов, установленных пакетом, с метаданными файлов, хранящимися в базе данных dpkg
(начиная с dpkg 1.17.2). Источником информации о метаданных файлов в базе данных являются сами
бинарные пакеты. Эти метаданные собираются во время распаковки пакета в процессе установки.
В настоящее время выполняется только одна функциональная проверка: проверка контрольной суммы MD5
содержимого файла по сравнению со значением, хранящимся в базе данных файлов. Проверка будет
выполнена только в том случае, если в базе данных содержится контрольная сумма MD5 файла. Чтобы
проверить наличие каких-либо отсутствующих метаданных в базе данных, можно использовать команду --audit.
Это всего лишь проверка целостности, и ее не следует рассматривать как какой-либо вид проверки безопасности.
Формат вывода можно выбрать с помощью опции --verify-format, которая по умолчанию использует
формат rpm, но это может измениться в будущем, и поэтому программы, анализирующие вывод этой команды,
должны явно указывать ожидаемый формат.
-C, --audit [имя_пакета...]
Выполняет проверку базы данных на предмет целостности и согласованности для указанного пакета или для всех пакетов, если имя пакета не указано (проверка для каждого пакета, начиная с dpkg 1.17.10). Например, выполняется поиск пакетов, которые установлены частично в системе или для которых отсутствуют, повреждены или устарели данные управления или файлы. dpkg предложит способы решения этих проблем.
--update-avail [файл_Packages]
--merge-avail [файл_Packages]
Обновляет информацию о доступных пакетах в dpkg и dselect. Команда --merge-avail объединяет старую информацию с информацией из файла Packages. Команда --update-avail заменяет старую информацию информацией из файла Packages. Файл Packages, поставляемый с Debian, обычно имеет имя «Packages». Если аргумент файл_Packages отсутствует или имеет значение «-», то он будет считываться из стандартного ввода (начиная с dpkg 1.17.7). dpkg хранит информацию о доступных пакетах в файле /var/lib/dpkg/available.
Более простая команда для однократного извлечения и обновления файла доступных пакетов — dselect update. Обратите внимание, что этот файл в основном бесполезен, если вы не используете dselect, а используете APT-совместимый интерфейс: APT имеет свою собственную систему для отслеживания доступных пакетов.
-A, --record-avail файл_пакета...
Обновляет информацию о доступных пакетах в dpkg и dselect, используя информацию из файла пакета. Если указана опция --recursive или -R, файл_пакета должен указывать на каталог.
--forget-old-unavail
В настоящее время устарела и не выполняет никаких действий, так как dpkg автоматически удаляет информацию об удаленных недоступных пакетах (начиная с dpkg 1.15.4), но только о тех, которые не содержат пользовательскую информацию, такую как параметры выбора пакетов.
--clear-avail
Удаляет существующую информацию о доступных пакетах.
--get-selections [шаблон_имени_пакета...]
Получает список параметров выбора пакетов и записывает его в стандартный вывод. Без шаблона не установленные пакеты (т. е. те, которые были ранее удалены) не отображаются.
--set-selections
Устанавливает параметры выбора пакетов, считывая их из файла, передаваемого через стандартный ввод. Этот файл должен быть в формате «имя_пакета состояние», где состояние — одно из следующих: install, hold, deinstall или purge. Также разрешены пустые строки и строки комментариев, начинающиеся с «#».
Файл доступных пакетов должен быть актуальным, чтобы эта команда была полезной, в противном случае неизвестные пакеты будут игнорироваться с предупреждением. Подробную информацию см. в разделах команд --update-avail и --merge-avail.
--clear-selections
Устанавливает запрошенное состояние для каждого некритичного пакета в значение deinstall (начиная с dpkg 1.13.18). Это предназначено для использования непосредственно перед командой --set-selections, чтобы удалить все пакеты, которых нет в списке, передаваемом в --set-selections.
--yet-to-unpack
Выполняет поиск пакетов, выбранных для установки, но по какой-то причине еще не установленных.
Примечание: эта команда использует как доступный файл, так и выбранные пакеты.
--predep-package
Выводит один пакет, который является целью одного или нескольких соответствующих предварительных зависимостей и сам не имеет неудовлетворенных предварительных зависимостей.
Если такой пакет существует, выводит его в виде записи файла Packages, которую можно при необходимости изменить.
Примечание: эта команда использует как доступный файл, так и выбранные пакеты.
Возвращает 0, когда пакет выводится, 1, когда подходящий пакет недоступен, и 2 в случае ошибки.
--add-architecture architecture
Добавляет архитектуру в список архитектур, для которых пакеты могут быть установлены без использования --force-architecture (начиная с dpkg 1.16.2). Архитектура, для которой собрана программа dpkg (т. е. вывод команды --print-architecture), всегда входит в этот список.
--remove-architecture architecture
Удаляет архитектуру из списка архитектур, для которых пакеты могут быть установлены без использования --force-architecture (начиная с dpkg 1.16.2). Если архитектура в настоящее время используется в базе данных, операция будет отклонена, за исключением случаев, когда указан параметр --force-architecture. Архитектуру, для которой собрана программа dpkg (т. е. вывод команды --print-architecture), нельзя удалить из этого списка.
--print-architecture
Выводит архитектуру пакетов, которые устанавливает dpkg (например, "i386").
--print-foreign-architectures
Выводит список дополнительных архитектур, для которых dpkg настроен для установки пакетов (начиная с dpkg 1.16.2), каждая на отдельной строке.
--assert-help
Выводит справку о параметрах --assert-feature (начиная с dpkg 1.21.0).
--assert-feature
Проверяет, поддерживает ли dpkg запрошенную функцию. Возвращает 0, если функция полностью поддерживается, 1, если функция известна, но dpkg пока не может ее поддерживать, и 2, если функция неизвестна. Текущий список функций, для которых можно выполнить проверку:
support-predepends
Поддерживает поле Pre-Depends (начиная с dpkg 1.1.0).
working-epoch
Поддерживает эпохи в строках версий (начиная с dpkg 1.4.0.7).
long-filenames
Поддерживает длинные имена файлов в архивах deb(5) (начиная с dpkg 1.4.1.17).
multi-conrep
Поддерживает несколько Conflicts и Replaces (начиная с dpkg 1.4.1.19).
multi-arch
Поддерживает поля и семантику multi-arch (начиная с dpkg 1.16.2).
versioned-provides
Поддерживает версиированные Provides (начиная с dpkg 1.17.11).
protected-field
Поддерживает поле Protected (начиная с dpkg 1.20.1).
--validate-thing string
Проверяет, имеет ли строка правильный синтаксис (начиная с dpkg 1.18.16). Возвращает 0, если строка допустима, 1, если строка недопустима, но может быть принята в менее строгих контекстах, и 2, если строка недопустима. Текущий список проверяемых элементов:
pkgname
Проверяет данное имя пакета (начиная с dpkg 1.18.16).
trigname
Проверяет данное имя триггера (начиная с dpkg 1.18.16).
archname
Проверяет данное имя архитектуры (начиная с dpkg 1.18.16).
version
Проверяет данную версию (начиная с dpkg 1.18.16).
--compare-versions ver1 op ver2
Сравнивает номера версий, где op — это двоичный оператор. dpkg возвращает true (0), если указанное условие выполнено, и false (1) в противном случае. Существует две группы операторов, которые различаются тем, как они обрабатывают пустую ver1 или ver2. Эти операторы рассматривают пустую версию как более раннюю, чем любая другая версия: lt le eq ne ge gt. Эти операторы рассматривают пустую версию как более позднюю, чем любая другая версия: lt-nl le-nl ge-nl gt-nl. Эти операторы предоставляются только для совместимости с синтаксисом файла управления: < << <= = >= >> >. Операторы < и > устарели и не должны использоваться из-за запутанной семантики. Например: 0.1 < 0.1 возвращает true.
-?, --help
Отображает краткое справочное сообщение.
--force-help
Предоставляет справку по параметрам --force-thing.
-Dh, --debug=help
Предоставляет справку по параметрам отладки.
--version
Отображает информацию о версии dpkg.
При использовании с --robot вывод будет представлять собой номер версии программы в виде десятичного числа, без переноса строки.
команды dpkg-deb
См. dpkg-deb(1) для получения дополнительной информации о следующих командах и других командах и параметрах, которые не представлены в интерфейсе dpkg.
-b, --build directory [archive|directory]
Создает пакет deb.
-c, --contents archive
Выводит содержимое пакета deb.
-e, --control archive [directory]
Извлекает информацию об управлении из пакета.
-x, --extract archive directory
Извлекает файлы, содержащиеся в пакете.
-X, --vextract archive directory
Извлекает и отображает имена файлов, содержащихся в пакете.
-f, --field archive [control-field...]
Отображает одно или несколько полей управления пакета.
--ctrl-tarfile archive
Выводит файл управления, содержащийся в пакете Debian.
--fsys-tarfile archive
Выводит файл файловой системы, содержащийся в пакете Debian.
-I, --info archive [control-file...]
Отображает информацию о пакете.
команды dpkg-query
См. dpkg-query(1) для получения дополнительной информации о следующих командах и других командах и параметрах, которые не представлены в интерфейсе dpkg.
-l, --list package-name-pattern...
Выводит список пакетов, соответствующих заданному шаблону.
-s, --status package-name...
Сообщает о статусе указанного пакета.
-L, --listfiles package-name...
Выводит список файлов, установленных в вашей системе из package-name.
-S, --search filename-search-pattern...
Выполняет поиск файла среди установленных пакетов.
-p, --print-avail package-name...
Отображает сведения о package-name, как они находятся в /var/lib/dpkg/available. Пользователям фронтендов на основе APT следует использовать apt show package-name.
ОПЦИИ
Все параметры могут быть указаны как в командной строке, так и в файле конфигурации dpkg /etc/dpkg/dpkg.cfg или в файлах-фрагментах (с именами, соответствующими этому шаблону оболочки '[0-9a-zA-Z_-]*') в каталоге конфигурации /etc/dpkg/dpkg.cfg.d/. Каждая строка в файле конфигурации является либо параметром (точно таким же, как и в командной строке, но без начальных дефисов), либо комментарием (если она начинается с символа '#').
--abort-after=number
Изменяет, после скольких ошибок dpkg прекратит работу. Значение по умолчанию — 50.
-B, --auto-deconfigure
При удалении пакета может возникнуть ситуация, когда другой установленный пакет зависит от удаленного пакета. Указание этого параметра приведет к автоматической деконфигурации пакета, который зависел от удаленного пакета.
-Doctal, --debug=octal
Включить отладку. octal формируется путем побитового ИЛИ (bitwise-OR) желаемых значений из списка ниже (обратите внимание, что эти значения могут измениться в будущих версиях). -Dh или --debug=help отображают эти значения отладки.
Номер Описание 1 Общая полезная информация о ходе выполнения 2 Вывод информации об активации и статусе скриптов сопровождающего 10 Вывод информации о каждом обработанном файле 100 Много информации о каждом обработанном файле 20 Вывод информации о каждом файле конфигурации 200 Много информации о каждом файле конфигурации 40 Информация о зависимостях и конфликтах 400 Много информации о зависимостях и конфликтах 10000 Активация и обработка триггеров 20000 Много информации об активации и обработке триггеров 40000 Бесконечное количество информации об активации и обработке триггеров 1000 Много информации о, например, каталоге dpkg/info 2000 Бесконечное количество информации
--force-things
--no-force-things, --refuse-things
Принудительно выполнять (или отказываться) от выполнения определенных действий. things — это список действий, разделенных запятыми, указанных ниже. --force-help отображает сообщение с описанием этих действий. Действия, отмеченные (*), выполняются по умолчанию.
Внимание: эти параметры предназначены в основном для использования экспертами. Использование
их без полного понимания их последствий может привести к поломке всей системы.
all:
Включает (или отключает) все параметры принудительного выполнения.
downgrade(*):
Устанавливает пакет, даже если установлена более новая версия.
Внимание: в настоящее время dpkg не выполняет никаких проверок зависимостей при понижении
версии и, следовательно, не предупреждает, если понижение версии приведет к нарушению
зависимости другого пакета. Это может иметь серьезные последствия, поскольку понижение
версии важных системных компонентов может даже привести к тому, что вся система станет
непригодной для использования. Используйте с осторожностью.
configure-any:
Также конфигурирует любые распакованные, но не настроенные пакеты, от которых зависит текущий пакет.
hold:
Разрешает автоматическую установку, обновление или удаление пакетов, даже если они помечены как «удерживаемые». Примечание: при явном запросе этих действий состояние выбора пакета «hold» всегда игнорируется.
remove-reinstreq:
Удаляет пакет, даже если он поврежден и помечен как требующий повторной установки. Это может, например, привести к тому, что части пакета останутся в системе, о чем dpkg забудет.
remove-protected:
Удаляет пакет, даже если он считается защищенным (начиная с dpkg 1.20.1). Защищенные пакеты содержат в основном важные системные компоненты загрузки или используются для пользовательских системных мета-пакетов. Удаление их может привести к тому, что вся система не сможет загрузиться или потеряет необходимую функциональность для работы, поэтому используйте с осторожностью.
remove-essential:
Удаляет пакет, даже если он считается важным. Важные пакеты содержат в основном очень базовые команды Unix, необходимые для системы упаковки, для работы системы в целом или во время загрузки (хотя последнее следует заменить защищенными пакетами). Удаление их может привести к тому, что вся система перестанет работать, поэтому используйте с осторожностью.
depends:
Преобразуйте все проблемы с зависимостями в предупреждения. Это влияет на поля Pre-Depends и Depends.
depends-version:
Не учитывайте версии при проверке зависимостей. Это влияет на поля Pre-Depends и Depends.
breaks:
Установите пакет, даже если это приведет к поломке другого пакета (начиная с dpkg 1.14.6). Это влияет на поле Breaks.
conflicts:
Установите пакет, даже если он конфликтует с другим пакетом. Это опасно, так как обычно приведет к перезаписи некоторых файлов. Это влияет на поле Conflicts.
confmiss:
Всегда устанавливайте отсутствующий файл конфигурации без запроса. Это опасно, так как означает, что изменения, внесенные в файл, не будут сохранены (файл будет удален).
confnew:
Если файл конфигурации был изменен, и версия в пакете изменилась, всегда устанавливайте новую версию без запроса, если только не указан параметр --force-confdef, в этом случае предпочтительно использовать действие по умолчанию.
confold:
Если файл конфигурации был изменен, и версия в пакете изменилась, всегда сохраняйте старую версию без запроса, если только не указан параметр --force-confdef, в этом случае предпочтительно использовать действие по умолчанию.
confdef:
Если файл конфигурации был изменен, и версия в пакете изменилась, всегда используйте действие по умолчанию без запроса. Если действия по умолчанию нет, программа прекратит работу и запросит пользователя, если только не указаны параметры --force-confnew или --force-confold, в этом случае будет использован один из этих параметров для определения окончательного действия.
confask:
Если файл конфигурации был изменен, всегда предлагайте заменить его версией из пакета, даже если версия в пакете не изменилась (начиная с dpkg 1.15.8). Если указан какой-либо из параметров --force-confnew, --force-confold или --force-confdef, он будет использован для определения окончательного действия.
overwrite:
Перезапишите файл одного пакета файлом другого пакета.
overwrite-dir:
Перезапишите каталог одного пакета файлом другого пакета.
overwrite-diverted:
Перезапишите перенаправленный файл исходной версией.
statoverride-add:
Перезапишите существующую запись о переопределении статистики при ее добавлении (начиная с dpkg 1.19.5).
statoverride-remove:
Игнорируйте отсутствующую запись о переопределении статистики при ее удалении (начиная с dpkg 1.19.5).
security-mac(*):
Используйте платформенно-специфическую систему принудительного контроля доступа (MAC) при установке файлов в файловую систему (начиная с dpkg 1.19.5). В системах Linux используется реализация SELinux.
unsafe-io:
Не выполняйте безопасные операции ввода-вывода при распаковке (начиная с dpkg 1.15.8.6). В настоящее время это означает, что не выполняются синхронизации файловой системы перед переименованием файлов, что, как известно, вызывает существенное снижение производительности в некоторых файловых системах, к сожалению, в тех, которые нуждаются в безопасных операциях ввода-вывода из-за их ненадежного поведения, вызывающего создание файлов нулевой длины при внезапных сбоях системы.
Примечание: для ext4, которая является основным источником проблем, рассмотрите возможность использования вместо этого опции монтирования `nodelalloc`,
которая устранит как снижение производительности, так и проблемы с безопасностью данных, причем последнее — за счет того, что файловая система не будет создавать файлы нулевой длины при внезапных сбоях системы, когда любое программное обеспечение не выполняет синхронизацию перед атомарными переименованиями.
Предупреждение: использование этой опции может улучшить производительность за счет возможной потери данных, используйте с осторожностью.
`script-chrootless`:
Запускать скрипты сборки без использования `chroot(2)` в `instdir`, даже если пакет не поддерживает этот режим работы (начиная с dpkg 1.18.5).
Предупреждение: это может уничтожить вашу хост-систему, используйте с особой осторожностью.
`architecture`:
Обрабатывать даже пакеты с неправильной или отсутствующей архитектурой.
`bad-version`:
Обрабатывать даже пакеты с неправильными версиями (начиная с dpkg 1.16.1).
`bad-path`:
`PATH` не содержит важные программы, поэтому проблемы вероятны.
`not-root`:
Попытаться (де)инсталлировать что-либо, даже не будучи пользователем root.
`bad-verify`:
Установить пакет, даже если проверка подлинности не удалась.
`--ignore-depends=package,...`:
Игнорировать проверку зависимостей для указанных пакетов (фактически проверка выполняется, но выдаются только предупреждения о конфликтах, ничего больше). Это влияет на поля `Pre-Depends`, `Depends` и `Breaks`.
`--no-act`, `--dry-run`, `--simulate`:
Выполнить все действия, которые должны быть выполнены, но не записывать никакие изменения. Это используется для того, чтобы увидеть, что произойдет при указанной команде, без фактического внесения каких-либо изменений.
Обязательно указывайте `--no-act` перед командой, иначе вы можете получить нежелательные результаты (например, `dpkg --purge foo --no-act` сначала удалит пакет «foo», а затем попытается удалить пакет «–no-act», хотя, вероятно, вы ожидали, что ничего не произойдет).
`-R`, `--recursive`:
Рекурсивно обрабатывать все обычные файлы, соответствующие шаблону `*.deb`, найденные в указанных каталогах и во всех его подкаталогах. Это можно использовать с командами `-i`, `-A`, `--install`, `--unpack` и `--record-avail`.
`-G`: Не устанавливать пакет, если уже установлена более новая версия того же пакета. Это псевдоним для `--refuse-downgrade`.
`--admindir=directory`:
Установить административный каталог в `directory`. В этом каталоге содержится множество файлов, содержащих информацию о состоянии установленных или удаленных пакетов и т. д. По умолчанию — «/var/lib/dpkg», если переменная среды `DPKG_ADMINDIR` не установлена.
`--instdir=directory`:
Установить каталог установки, который является каталогом, в котором должны быть установлены пакеты. `instdir` также является каталогом, который передается в `chroot(2)` перед запуском скриптов установки пакета, что означает, что скрипты видят `instdir` как корневой каталог. По умолчанию — «/», если переменная среды `DPKG_ROOT` не установлена (начиная с dpkg 1.21.10).
`--root=directory`:
Установить корневой каталог в `directory`, что устанавливает каталог установки в «directory», а административный каталог — в «directory/var/lib/dpkg», если переменная среды `DPKG_ROOT` не установлена (начиная с dpkg 1.21.10).
-O, --selected-only
Обрабатывать только те пакеты, которые выбраны для установки. Фактическая отметка выполняется с помощью dselect или dpkg, когда он обрабатывает пакеты. Например, когда пакет удаляется, он будет помечен как выбранный для деинсталляции.
-E, --skip-same-version
Не устанавливать пакет, если пакет той же версии и архитектуры уже установлен.
Начиная с dpkg 1.21.10, также учитывается архитектура, что позволяет выполнять перекрестную установку пакетов или устанавливать дополнительные совместно устанавливаемые экземпляры с одной и той же версией, но разной архитектурой.
--pre-invoke=command
--post-invoke=command
Установить команду-перехватчик, которая будет выполняться через «sh -c» до или после выполнения dpkg для действий распаковки, настройки, установки, только триггеров, удаления и очистки (начиная с dpkg 1.15.4), а также действий добавления архитектуры и удаления архитектуры (начиная с dpkg 1.17.19). Этот параметр можно указать несколько раз. Порядок, в котором указываются параметры, сохраняется, при этом параметры из файлов конфигурации имеют приоритет. Переменная среды DPKG_HOOK_ACTION устанавливается для перехватчиков для текущего действия dpkg.
Перехватчики не выполняются, когда указан параметр --no-act или при запуске от имени пользователя, не являющегося root, без параметра --force-not-root.
Примечание: Интерфейсы могут вызывать dpkg несколько раз за одно выполнение, что может привести к более частому выполнению перехватчиков, чем ожидалось.
--path-exclude=glob-pattern
--path-include=glob-pattern
Установить glob-pattern в качестве фильтра путей, либо исключая, либо повторно включая ранее исключенные пути, соответствующие указанным шаблонам, во время установки (начиная с dpkg 1.15.8).
Предупреждение: Имейте в виду, что в зависимости от исключенных путей вы можете полностью сломать свою систему, используйте с осторожностью.
В шаблонах glob используются те же подстановочные знаки, что и в оболочке, где «*» соответствует любой последовательности символов, включая пустую строку, а также «/». Например, «/usr/*/READ*» соответствует «/usr/share/doc/package/README». Как обычно, «?» соответствует любому отдельному символу (опять же, включая «/»). А «[» начинает класс символов, который может содержать список символов, диапазоны и дополнения. См. glob(7) для получения подробной информации о globbing. Обратите внимание: текущая реализация может повторно включать больше каталогов и символических ссылок, чем необходимо, особенно когда есть более конкретное повторное включение, чтобы быть в безопасности и избежать возможных сбоев при распаковке; будущая работа может исправить это.
Это можно использовать для удаления всех путей, кроме некоторых конкретных; типичный случай:
--path-exclude=/usr/share/doc/*
--path-include=/usr/share/doc/*/copyright
чтобы удалить все файлы документации, кроме файлов авторских прав.
Эти два параметра можно указать несколько раз и перемежать их друг с другом. Оба обрабатываются в указанном порядке, при этом последнее правило, которое соответствует имени файла, принимает решение.
Фильтры применяются при распаковке двоичных пакетов, и, следовательно, они знают только тип объекта, который в данный момент фильтруется (например, обычный файл или каталог), и не имеют представления о том, какие объекты будут дальше. Поскольку эти фильтры имеют побочные эффекты (в отличие от фильтров find(1)), исключение точного имени пути, который оказывается объектом-каталогом, например, /usr/share/doc, не даст желаемого результата, и будет исключен только этот путь (который может быть автоматически повторно включен, если код сочтет это необходимым). Любые последующие файлы, содержащиеся в этом каталоге, не будут распакованы.
Подсказка: убедитесь, что шаблоны не расширяются вашей оболочкой.
--verify-format format-name
Устанавливает формат вывода для команды --verify (начиная с dpkg 1.17.2).
В настоящее время поддерживается только один формат вывода: rpm, который состоит из строки для каждого пути, для которого не прошла какая-либо проверка. Эти строки имеют следующий формат:
missing [c] pathname [(error-message)]
?M5?????? [c] pathname
Первые 9 символов используются для сообщения о результате проверки, либо в виде литеральной строки missing, когда файл отсутствует или его метаданные не могут быть получены, либо в виде одного из следующих специальных символов, сообщающих о результате каждой проверки:
‘?’ Означает, что проверку невозможно выполнить (отсутствие поддержки, разрешения на файлы и т. д.).
‘.’ Означает, что проверка прошла успешно.
‘A-Za-z0-9’
Означает, что определенная проверка не удалась. Следующие позиции и буквенно-цифровые символы в настоящее время поддерживаются:
1‘?’
Эти проверки в настоящее время не поддерживаются, всегда будут иметь значение ‘?’.
2‘M’
Проверка режима файла не удалась (начиная с dpkg 1.21.0). Поскольку метаданные пути в настоящее время не отслеживаются, эту проверку можно лишь частично эмулировать с помощью очень простого эвристического метода для путей, имеющих известное дайджест-значение, что подразумевает, что это должны быть обычные файлы, и проверка не удастся, если путь не является обычным файлом в файловой системе. В настоящее время эта проверка никогда не будет успешной, так как недостаточно информации.
3‘5’
Проверка дайджеста не удалась, что означает, что содержимое файла изменилось. Это только проверка целостности, и ее не следует рассматривать как какую-либо форму проверки безопасности.
49 ‘?’
Эти проверки в настоящее время не поддерживаются, всегда будут иметь значение ‘?’.
За строкой следует пробел и символ атрибута. Поддерживается следующий символ атрибута:
‘c’ Путь является файлом конфигурации (conffile).
Затем следует еще один пробел и путь.
В случае, если запись имеет тип missing, и файл фактически отсутствует в файловой системе, то за строкой следует пробел и сообщение об ошибке, заключенное в круглые скобки.
--status-fd n
Отправляет машиночитаемую информацию о состоянии и ходе выполнения пакета в файловый дескриптор n. Этот параметр можно указать несколько раз. Информация обычно представляет собой одну запись в строке, в одном из следующих форматов:
status: package: status
Статус пакета изменен; статус соответствует данным из файла статуса.
status: package : error : extended-error-message
Произошла ошибка. Любые возможные новые строки в extended-error-message будут преобразованы в пробелы перед выводом.
status: file : conffile-prompt : 'real-old' 'real-new' useredited distedited
Пользователю задается вопрос о файле конфигурации.
processing: stage: package
Отправляется непосредственно перед началом этапа обработки. stage — это одно из значений: upgrade, install (оба отправляются перед распаковкой), configure, trigproc, disappear, remove, purge.
--status-logger=command
Отправляет машиночитаемый статус пакета и информацию о ходе выполнения в стандартный ввод командной оболочки, для запуска с помощью «sh -c» (начиная с dpkg 1.16.0). Этот параметр можно указывать несколько раз. Формат вывода такой же, как и в --status-fd.
Статусные регистраторы не выполняются, когда указан параметр --no-act или при запуске от имени непривилегированного пользователя без параметра --force-not-root.
--log=filename
Записывает обновления статуса и действия в файл filename вместо файла по умолчанию /var/log/dpkg.log. Если этот параметр указан несколько раз, используется последний указанный файл. Сообщения журнала имеют следующий формат:
YYYY-MM-DD HH:MM:SS startup type command
Для каждого вызова dpkg, где type — это archives (с командой unpack или install) или packages (с командой configure, triggers-only, remove или purge).
YYYY-MM-DD HH:MM:SS status state pkg installed-version
Для обновлений статуса.
YYYY-MM-DD HH:MM:SS action pkg installed-version available-version
Для действий, где action — это одно из значений: install, upgrade, configure, trigproc, disappear, remove или purge.
YYYY-MM-DD HH:MM:SS conffile filename decision
Для изменений файлов конфигурации, где decision — это либо install, либо keep.
--robot
Использует машиночитаемый формат вывода. Это обеспечивает интерфейс для программ, которым необходимо анализировать вывод некоторых команд, которые в противном случае не выдают машиночитаемый формат вывода. Локализация не используется, и вывод изменяется для упрощения анализа.
Единственной поддерживаемой командой в настоящее время является --version.
--no-pager
Отключает использование программы-паджинатора при отображении информации (начиная с dpkg 1.19.2).
--no-debsig
Не проверять подписи пакетов.
--no-triggers
Не запускать триггеры во время этого выполнения (начиная с dpkg 1.14.17), но активации все равно будут записываться. Если используется с --configure package или --triggers-only package, то postinst указанного пакета все равно будет выполняться, даже если требуется только запуск триггеров. Использование этого параметра может привести к тому, что пакеты будут находиться в неправильном состоянии triggers-awaited и triggers-pending. Это можно исправить позже, выполнив команду: dpkg --configure --pending.
--triggers
Отменяет предыдущий параметр --no-triggers (начиная с dpkg 1.14.17).
СТАТУС ВЫХОДА
0 Запрошенная команда была успешно выполнена. Или команда проверки или утверждения вернула true.
1 Проверка или утверждение, которое вернуло ложное значение.
2 Критическая или непоправимая ошибка из-за неправильного использования командной строки или взаимодействия с системой, например, при доступе к базе данных, выделении памяти и т. д.
СРЕДА
Внешняя среда
PATH
Эта переменная должна быть определена в среде и указывать на системные пути, в которых находятся несколько необходимых программ. Если она не задана или программы не найдены, dpkg прекратит работу.
HOME
Если задана, dpkg будет использовать ее в качестве каталога, из которого считывается пользовательский файл конфигурации.
TMPDIR
Если задана, dpkg будет использовать ее в качестве каталога, в котором создаются временные файлы и каталоги.
SHELL
Программа dpkg будет выполняться при запуске новой интерактивной оболочки или при запуске команды через оболочку.
PAGER
DPKG_PAGER
Программа, которую dpkg будет выполнять при запуске программы постраничной прокрутки, которая будет выполнена с помощью "$SHELL -c", например, при отображении различий в файлах конфигурации. Если SHELL не задана, вместо нее будет использоваться «sh».
DPKG_PAGER переопределяет переменную окружения PAGER (начиная с dpkg 1.19.2). Если ни одна из программ, на которые указывают DPKG_PAGER или PAGER, не присутствует, будут опробованы следующие программы в порядке очереди (начиная с dpkg 1.22.12): программа постраничной прокрутки по умолчанию, [less]({filename}../../less)(1), more(1) и, наконец, [cat]({filename}../../cat)(1).
DPKG_COLORS
Определяет режим цветового оформления (начиная с dpkg 1.18.5). В настоящее время принимаются следующие значения: auto (по умолчанию), always и never.
DPKG_NLS
Если задана, она будет использоваться для определения того, следует ли активировать поддержку родного языка, также известную как поддержка интернационализации (или i18n) (начиная с dpkg 1.22.7). Принимаемые значения: 0 и 1 (по умолчанию).
DPKG_DEBUG
Устанавливает маску отладки (начиная с dpkg 1.21.10) в виде восьмеричного значения. В настоящее время приняты следующие флаги, которые описаны в опции --debug.
DPKG_FORCE
Устанавливает флаги принудительного выполнения (начиная с dpkg 1.19.5). Когда эта переменная присутствует, никакие встроенные значения по умолчанию для принудительного выполнения не применяются. Если переменная присутствует, но пуста, все флаги принудительного выполнения будут отключены.
DPKG_ROOT
Если задана и опции --instdir или --root не указаны, она будет использоваться в качестве корневого каталога файловой системы (начиная с dpkg 1.21.10).
DPKG_ADMINDIR
Если задана и опции --admindir или --root не указаны, она будет использоваться в качестве административного каталога dpkg (начиная с dpkg 1.20.0).
DPKG_FRONTEND_LOCKED
Задается менеджером пакетов, чтобы уведомить dpkg о том, что он не должен получать блокировку интерфейса (начиная с dpkg 1.19.1).
DPKG_PATH_PASSWD
Указывает путь к системному файлу passwd. Этот путь является относительным к каталогу --root. По умолчанию используется /etc/passwd.
Начиная с dpkg 1.22.16.
DPKG_PATH_GROUP
Указывает путь к системному файлу групп. Этот путь является относительным к каталогу --root. По умолчанию используется /etc/group.
Начиная с dpkg 1.22.16.
Внутренняя среда
LESS
Определяется dpkg как «-FRSXMQ», если она еще не задана, при запуске программы постраничной прокрутки (начиная с dpkg 1.19.2). Чтобы изменить поведение по умолчанию, эту переменную можно предварительно установить на другое значение, включая пустую строку, или можно установить переменные PAGER или DPKG_PAGER, чтобы отключить определенные опции с помощью «-+», например, DPKG_PAGER="less -+F".
DPKG_ROOT
Определяется dpkg в среде скрипта обслуживания, чтобы указать, к какой установке следует применить скрипт (начиная с dpkg 1.18.5). Это значение предназначено для добавления в начало любого пути, с которым работают скрипты обслуживания. Во время нормальной работы эта переменная пуста. При установке пакетов в другой каталог instdir, dpkg обычно вызывает скрипты обслуживания, используя chroot(2), и оставляет эту переменную пустой, но если указан параметр --force-script-chrootless, вызов chroot(2) пропускается, и эта переменная устанавливается в instdir (который будет непустым).
DPKG_ADMINDIR
Определяется dpkg в среде скрипта обслуживания, чтобы указать каталог dpkg, который следует использовать (начиная с dpkg 1.16.0). Эта переменная всегда устанавливается в текущее значение --admindir.
DPKG_FORCE
Определяется dpkg в подпроцессах, чтобы указать текущие включенные имена параметров принудительного действия, разделенные запятыми (начиная с dpkg 1.19.5).
DPKG_SHELL_REASON
Определяется dpkg в оболочке, запущенной для запроса на конфликтный файл, чтобы изучить ситуацию (начиная с dpkg 1.15.6). Текущее допустимое значение: conffile-prompt.
DPKG_CONFFILE_OLD
Определяется dpkg в оболочке, запущенной для запроса на конфликтный файл, чтобы изучить ситуацию (начиная с dpkg 1.15.6). Содержит путь к старому конфликтному файлу.
DPKG_CONFFILE_NEW
Определяется dpkg в оболочке, запущенной для запроса на конфликтный файл, чтобы изучить ситуацию (начиная с dpkg 1.15.6). Содержит путь к новому конфликтному файлу.
DPKG_HOOK_ACTION
Определяется dpkg в оболочке, запущенной при выполнении действия хука (начиная с dpkg 1.15.4). Содержит текущее действие dpkg.
DPKG_RUNNING_VERSION
Определяется dpkg в среде скрипта обслуживания, чтобы указать версию текущего экземпляра dpkg (начиная с dpkg 1.14.17).
DPKG_MAINTSCRIPT_PACKAGE
Определяется dpkg в среде скрипта обслуживания, чтобы указать имя пакета (без указания архитектуры), с которым выполняется работа (начиная с dpkg 1.14.17).
DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT
Определяется dpkg в среде скрипта обслуживания, чтобы указать счетчик ссылок на пакет, то есть количество экземпляров пакета, состояние которых больше, чем «не установлен» (начиная с dpkg 1.17.2).
DPKG_MAINTSCRIPT_ARCH
Определяется dpkg в среде скрипта обслуживания, чтобы указать архитектуру, для которой был создан пакет (начиная с dpkg 1.15.4).
DPKG_MAINTSCRIPT_NAME
Определяется dpkg в среде скрипта обслуживания, чтобы указать имя выполняемого скрипта, одно из preinst, postinst, prerm или postrm (начиная с dpkg 1.15.7).
DPKG_MAINTSCRIPT_DEBUG
Определяется dpkg в среде скрипта обслуживания, чтобы указать значение («0» или «1»), указывающее, был ли запрошен режим отладки (с помощью параметра --debug) для скриптов обслуживания (начиная с dpkg 1.4).
ФАЙЛЫ
/etc/dpkg/dpkg.cfg.d/[0-9a-zA-Z_-]*
Файлы фрагментов конфигурации (начиная с dpkg 1.15.4).
/etc/dpkg/dpkg.cfg
Файл конфигурации с настройками по умолчанию.
/var/log/dpkg.log
Файл журнала по умолчанию (см. /etc/dpkg/dpkg.cfg и опцию --log).
Другие файлы, перечисленные ниже, находятся в своих каталогах по умолчанию, см. опцию --admindir, чтобы узнать, как изменить расположение этих файлов.
/var/lib/dpkg/available
Список доступных пакетов.
/var/lib/dpkg/status
Статусы доступных пакетов. Этот файл содержит информацию о том, помечен ли пакет для удаления или нет, установлен ли он или нет и т. д. См. раздел «ИНФОРМАЦИЯ О ПАКЕТАХ» для получения дополнительной информации.
Файл статуса ежедневно создается в /var/backups. Он может быть полезен, если он будет потерян или поврежден из-за проблем с файловой системой.
Формат и содержимое двоичного пакета описаны в deb(5).
Имена файлов файловой системы
Во время распаковки и настройки dpkg использует различные имена файлов для резервного копирования и отката. Ниже приведено упрощенное описание того, как эти имена файлов используются во время установки пакета.
*.dpkg-new
Во время распаковки dpkg извлекает новые объекты файловой системы в имя_пути.dpkg-new (за исключением существующих каталогов или символических ссылок на каталоги, которые пропускаются). После этого, после создания резервных копий старых объектов, объекты переименовываются в имя_пути.
*.dpkg-tmp
Во время распаковки dpkg создает резервные копии старых объектов файловой системы в имя_пути.dpkg-tmp после извлечения новых объектов. Эти резервные копии создаются либо путем переименования для каталогов (но только если они меняют тип файла), либо путем создания новой символической ссылки для символических ссылок, либо путем создания жесткой ссылки для любого другого объекта файловой системы, за исключением файлов конфигурации, для которых резервные копии не создаются, поскольку они обрабатываются на более позднем этапе.
В случае необходимости отката эти резервные копии используются для восстановления предыдущего содержимого объектов. Они автоматически удаляются после завершения установки.
*.dpkg-old
Во время настройки, при установке новой версии, dpkg может создать резервную копию предыдущего измененного файла конфигурации в имя_пути.dpkg-old.
*.dpkg-dist
Во время настройки, при сохранении старой версии, dpkg может создать резервную копию нового неизмененного файла конфигурации в имя_пути.dpkg-dist.
БЕЗОПАСНОСТЬ
Любая операция, требующая доступа на запись к базе данных или файловой системе, считается привилегированной операцией, которая может привести к повышению привилегий до root. Эти операции никогда не должны делегироваться ненадежному пользователю или выполняться для ненадежных пакетов, так как это может позволить получить доступ root к системе.
Некоторые операции (например, проверка пакета) могут требовать привилегий root для доступа к файлам в файловой системе, которые в противном случае были бы недоступны из-за ограниченных разрешений, но в остальном должны работать нормально и выдавать соответствующие сообщения в таких случаях.
Операции запроса никогда не должны требовать root, и делегирование их выполнения непривилегированным пользователям с помощью какой-либо команды gain-root может иметь последствия для безопасности (например, повышение привилегий), например, когда автоматически вызывается пейджер.
Также смотрите раздел «БЕЗОПАСНОСТЬ» в справочных страницах dpkg-deb(1) и dpkg-split(1).
ОШИБКИ
--no-act обычно предоставляет меньше информации, чем могло бы быть полезно.
ПРИМЕРЫ
Чтобы перечислить установленные пакеты, связанные с редактором vi(1) (обратите внимание, что dpkg-query больше не загружает файл доступных пакетов по умолчанию, и для этого следует использовать опцию dpkg-query --load-avail):
dpkg -l '*vi*'
Чтобы просмотреть записи в /var/lib/dpkg/available для двух пакетов:
dpkg --print-avail vim neovim | less
Чтобы самостоятельно выполнить поиск в списке пакетов:
dpkg --print-avail | less
Чтобы удалить установленный пакет neovim:
dpkg -r neovim
Чтобы установить пакет, сначала необходимо найти его в архиве или на носителе. При использовании архива на основе структуры пула, достаточно знать область архива и имя пакета, чтобы определить путь:
dpkg -i /media/bdrom/pool/main/v/vim/vim_9.0.2018-1_amd64.deb
Чтобы сделать локальную копию состояния выбора пакетов:
dpkg --get-selections >myselections
Вы можете передать этот файл на другой компьютер, и после обновления файла доступных пакетов там с помощью выбранного вами интерфейса диспетчера пакетов (см. [https://wiki.debian.org/Teams/Dpkg/FAQ#set-selections] для получения дополнительной информации), например:
apt-cache dumpavail | dpkg --merge-avail
вы можете установить его с помощью:
dpkg --clear-selections
dpkg --set-selections <myselections
Обратите внимание, что это фактически не установит и не удалит что-либо, а только установит состояние выбора для запрошенных пакетов. Вам потребуется какое-то другое приложение для фактической загрузки и установки запрошенных пакетов. Например, выполните apt-get dselect-upgrade.
Обычно вы обнаружите, что dselect(1) предоставляет более удобный способ изменения состояния выбора пакетов.
ДОПОЛНИТЕЛЬНАЯ ФУНКЦИОНАЛЬНОСТЬ
Дополнительную функциональность можно получить, установив любой из следующих пакетов: apt, aptitude и debsig-verify.
ССЫЛКИ
aptitude(8), apt(8), dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5) и dpkg-reconfigure(8).
АВТОРЫ
Список людей, внесших вклад в dpkg, можно найти в /usr/share/doc/dpkg/THANKS.