Для чего нужен dpkg?


21

Мой вопрос прост - я хочу узнать больше о dpkg - что он делает?


Это было отредактировано, по крайней мере, дважды, чтобы улучшить ясность - в таком случае, возможно, стоит оставить его открытым (при условии, что оно не является дубликатом), поскольку оно дало хотя бы один хороший ответ.
Белаква

1
Вы должны посетить сначала: en.wikipedia.org/wiki/Dpkg
Pandya

Ответы:


17

Как уже было сказано, dpkgэто низкоуровневый системный инструмент для извлечения, анализа, распаковки и установки или удаления файлов .deb. Однако лучше использовать Software Centreили Gdebiустанавливать или удалять файлы .deb, полученные из других источников, поскольку эти две программы имеют разрешение зависимостей.

Однако, что не было объяснено, это анатомия обновления с использованием dpkgи apt-get. Если, например, мы вызываем apt-getустановку cheese, дерево зависимостей анализируется, и необходимые файлы выбираются apt-get, а затем передает их dpkgдля извлечения, анализа и установки в правильные места и их настройки в соответствии со скриптами внутри них.

Сценарии, считываемые dpkgвнутри каждого файла .deb, важны, поскольку они дают программе информацию об установке, удалении и настройке пакетов. Следовательно, когда вы заглядываете /var/log/dpkg.logвнутрь, появляется много подробных сведений о «триггерах» и пакетах, проходящих различные этапы распаковки и настройки. В своем блоге Рафаэль Херцог (который является ключевым разработчиком и сопровождающим dpkgпакета Debian ) объясняет больше о триггерах dpkg и о том, как dpkgпроверять и настраивать пакеты.

Теперь мы добираемся до сути того, что dpkgделает; он мастерски обрабатывает пакеты Debian, а не их зависимости. С помощью dpkg-deb, например, вы можете выполнять различные действия при анализе и извлечении файлов из архивов .deb вручную; см. man dpkg-debдля получения дополнительной информации.

Статус каждого пакета указан в списке /var/lib/dpkg/status, который можно использовать grepдля проверки конкретного пакета. Dpkgтакже может быть вызван для переконфигурирования определенных пакетов, которые были настроены (см. man dpkg-reconfigure):

sudo dpkg-reconfigure <package>

Или выполнить настройку всех ненастроенных пакетов, если возникла проблема с обновлением, а конфигурация некоторых пакетов еще не завершена:

sudo dpkg --configure -a

Для большого учебника , который фокусируется на dpkgи apt-get, смотрите главы 5 и 6 Debian Handbook , который является лучшим обсуждением доступно. Войдите man dpkgв свой терминал или просмотрите онлайн- страницы Ubuntu, чтобы увидеть все доступные варианты, такие как использование dpkg -lсписка текущих установленных пакетов.


4

dpkg - это способ установки из .deb из командной строки или удаления уже установленных пакетов. Например, если у вас есть файл .deb в вашем домашнем каталоге, запуск dpkg -i yourpackage.debустановит этот пакет для вас. Я нахожу это полезным по крайней мере для меня, потому что иногда, нажимая на файл .deb, он загружает Ubuntu Software Center, но никогда не устанавливает его и не сталкивается с проблемами.


4

Как всегда, manкоманда - отличное место для старта.
man dpkgтем не менее, может дать вам все варианты:

dpkg - менеджер пакетов для систем на основе Debian. Он может устанавливать, удалять и создавать пакеты, но, в отличие от других систем управления пакетами, он не может автоматически загружать и устанавливать пакеты и их зависимости.

Так что в основном это apt-get без разрешения зависимостей, и он используется для установки файлов .deb.

Я предупреждаю вас: удаление пакетов с использованием dpkg в большинстве случаев НЕ рекомендуется. Лучше использовать менеджер пакетов, который обрабатывает зависимости, чтобы гарантировать, что система находится в согласованном состоянии.

Например, используя dpkg -r zipвы можете удалить пакет zip, но все пакеты, которые зависят от него, все равно будут установлены и могут перестать работать правильно.

Вы можете прочитать об этом больше в руководстве по серверу и в других местах .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.