3.13. Разрешение конфликтов зависимостей в Debian

Проблема
Программа не устанавливается из-за проблем с зависимостями, или команда
apt-get dist-upgrade оставляет пакеты, которые нужно удалить.
Решение
Существует несколько команд, которые могут пригодиться для решения этой зада-
чи; в этом разделе они перечисляются в том порядке, в котором их стоит попробо-
вать.
Допустим, проблемы возникли с пакетом tibpam-modules, который не желает
обновляться:
# apt-get install libpam-modules
The following packages have unmet dependencies:
libpam-modules: Depends: Iibdb3 (>=3.2.9-19.1) but 3.2.9-19 is to be installed
E: Broken packages
Если вы работаете в смешанной системе, для начала попробуйте указать
версию:
# apt-get install -t stable libpam-modules
Если это не помогает или система не является смешанной, попробуйте восполь-
зоваться системой разрешения конфликтов Debian:
# apt-get -f install
Затем выполните команду:
# dpkg --configure -a
И снова повторите команду:
# apt-get -f install
Если будет получен следующий ответ, значит, попытка завершилась неудачей:
Reading Package Lists... Done
Building Dependency Tree... Done
0 upgraded, 0 newly installed. 0 to remove and 1 not upgraded.
Теперь проверьте, что произойдет при удалении существующего пакета libpammodules:
# apt-get remove --dry-run libpam-modules
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
62 Глава 3. Установка и сопровождение в системах на базе Debian
adduser adminmenu apache at base-config courier-imap courier-imap-ssl courier-pop
courier-pop-ssl cron cupsys cupsys-driver-gimpprint diet-elements dict-foldoc dictgcide
diet-jargon dict-vera dict-wn dictd gdm2...
. . . .
WARNING: The following essential packages w i l l be removed
This should NOT be done unless you know exactly what you are doing!
login libpam-modules (due to login)
В данном случае исправление конфликтов зависимостей потребует едва ли не
полной перестройки системы. Чаще проблемы ограничиваются несколькими па-
кетами. В этом случае начинайте удалять наименее важные из них, пока конфлик-
ты зависимостей не будут разрешены, а затем переустановите все пакеты, которые
вам нужны.
Если apt-get -u dist-upgrage отображает какие-либо задержанные (held) пакеты,
от них лучше избавиться. Пакеты удерживаются из-за конфликтов зависимостей,
которые не удается разрешить apt. Попробуйте воспользоваться следующей ко-
мандой для поиска и исправления конфликтов:
# apt-get -о Debug::pkgProblemResolver=yes dist-upgrade
Если исправить конфликты не удается, команда завершается с сообщением
О upgraded. О newly installed, 0 to remove and 6 not upgraded.
Удаляйте held-пакеты один за одним, каждый раз запуская dist-upgrade, пока не
останется ни одного задержанного пакета. Затем установите заново все необходи-
мые пакеты. Не забудьте использовать ключ —dry-run, чтобы заранее знать обо всех
последствиях:
# apt-get remove --dry-run libsdl-peri
Комментарий
В «монолитных» системах подобные конфликты версий встречаются редко. Поль-
зователи смешанных систем сталкиваются с ними чаще. Чтобы предотвратить их,
будьте чрезвычайно осмотрительны при выборе устанавливаемых программ — при
первой установке Debian потратьте немного времени и выберите каждый необхо-
димый пакет.
См. также
dpkg(8), apt-get(8); Debian User's List с архивами (http://lists.debian.org/debian-user/).