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



Программа не устанавливается из-за проблем с зависимостями, или команда apt dist-upgrade оставляет пакеты, которые нужно удалить. Существует несколько команд, которые могут пригодиться для решения этой задачи; в этом разделе они перечисляются в том порядке, в котором их стоит попробовать.

Допустим, проблемы возникли с пакетом libpam-modules, который не желает обновляться:

# apt install libpam-modules

...

The following packages have unmet dependencies:

libpam-modules: Depends: libdb3 (>=3.2.9-19.1) but 3.2.9-19 is to be installed

E: Broken packages

Если вы работаете в смешанной системе, для начала попробуйте указать версию:

# apt install -t stable libpam-modules

Если это не помогает или система не является смешанной, попробуйте воспользоваться системой разрешения конфликтов Debian:

# apt -f install

Затем выполните команду:

# dpkg --configure -a

И снова повторите команду:

# apt -f install

Если будет получен следующий ответ, значит, попытка завершилась неудачей:

Reading Package Lists... Done

Building Dependency Tree... Done

0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Теперь проверьте, что произойдет при удалении существующего пакета libpammodules:

# apt remove --dry-run libpam-modules

Reading Package Lists... Done

Building Dependency Tree... Done

The following packages will be REMOVED: adduser adminmenu apache at base-config courier-imap courier-imap-ssl courier-pop courier-pop-ssl cron cupsys cupsys-driver-gimpprint dict-elements dict-foldoc dict-gcide dict-jargon dict-vera dict-wn dictd gdm2...

....

WARNING: The following essential packages will be removed

This should NOT be done unless you know exactly what you are doing!

login libpam-modules (due to login)

В данном случае исправление конфликтов зависимостей потребует едва ли не полной перестройки системы. Чаще проблемы ограничиваются несколькими пакетами. В этом случае начинайте удалять наименее важные из них, пока конфликты зависимостей не будут разрешены, а затем переустановите все пакеты, которые вам нужны.

Если apt -u dist-upgrage отображает какие-либо задержанные (held) пакеты, от них лучше избавиться. Пакеты удерживаются из-за конфликтов зависимостей, которые не удается разрешить apt. Попробуйте воспользоваться следующей командой для поиска и исправления конфликтов:

 # apt -o Debug::pkgProblemResolver=yes dist-upgrade

Если исправить конфликты не удается, команда завершается с сообщением

0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.

Удаляйте held-пакеты один за одним, каждый раз запуская dist-upgrade, пока не останется ни одного задержанного пакета. Затем установите заново все необходимые пакеты. Не забудьте использовать ключ --dry-run, чтобы заранее знать обо всех последствиях: # apt remove --dry-run libsdl-perl В «монолитных» системах подобные конфликты версий встречаются редко. Пользователи смешанных систем сталкиваются с ними чаще. Чтобы предотвратить их, будьте чрезвычайно осмотрительны при выборе устанавливаемых программ — при первой установке Debian потратьте немного времени и выберите каждый необходимый пакет.

Самостоятельное изучение

1. Установка пакетов из исходных кодов. Команды compile, make, make install

2. Установка и запуск программ Windows в системе Linux. Программа-эмулятор Wine/


Дата добавления: 2019-07-17; просмотров: 161; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!