Примечание о возможном дубликате:
AFAIK, это не дубликат Как разрешить неудовлетворенные зависимости после добавления PPA? в противном случае, докажите это, решив тестовую задачу, о которой я упоминаю ниже, используя любой ответ оттуда.
Фон:
Я сталкивался с этой проблемой до того, как исправить установку wine на Ubuntu 14.04.3LTS 64 bit . Это было решено путем ручного / человеческого анализа всех рекурсивных зависимостей целевого пакета ( wine
).
Воспроизведите проблему (контрольный пример):
Давайте создадим ту же ситуацию, просто упрощая всего 1 пакет с неприятностями.
- Установите свежую Ubuntu 14.04 на VirtualBox.
- Откройте
software-properties-gtk
и включитеbackports
репозиторий. Получить список последних пакетов
sudo apt-get update
Запустите,
apt-get -s install wine
чтобы подтвердить, чтоwine
можно установить.Установите тревожный пакет
libcgmanager0
из бэкпорта$ apt-cache policy libcgmanager0 libcgmanager0: Installed: 0.24-0ubuntu5 Candidate: 0.24-0ubuntu7.5 Version table: 0.39-2ubuntu2~ubuntu14.04.1 0 100 http://dz.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages 0.24-0ubuntu7.5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages 0.24-0ubuntu7.1 0 500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages *** 0.24-0ubuntu5 0 500 http://dz.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 100 /var/lib/dpkg/status
Принудительно
apt
установитьlibcgmanager0
версию0.39-2ubuntu2~ubuntu14.04.1
sudo apt-get install libcgmanager0=0.39-2ubuntu2~ubuntu14.04.1
Теперь мы попадаем в ту же ситуацию, что и пользователь, из упомянутого вопроса в фоновом режиме, установка Wine не выполняется с неудовлетворенной зависимостью, показывая только пакеты зависимостей первого уровня.
apt-get -s install wine
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine : Depends: wine1.6 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6 : Depends: wine1.6-i386 (= 1:1.6.2-0ubuntu4) E: Unable to correct problems, you have held broken packages.
apt-get -s install wine1.6-i386
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: wine1.6-i386:i386 : Depends: libglu1-mesa:i386 but it is not going to be installed or libglu1:i386 Depends: libgphoto2-6:i386 (>= 2.5.2) but it is not going to be installed Depends: libgphoto2-port10:i386 (>= 2.5.2) but it is not going to be installed Recommends: libsane:i386 but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Непрактично следовать зависимостям apt-get install
один за другим.
Идеальное решение:
Настоящая проблема здесь
apt
Не удалось установитьlibcgmanager0:i386
версию,0.39-2ubuntu2~ubuntu14.04.1
поскольку репозиторий backports имеет более низкий приоритет,100
чем версия0.24-0ubuntu7.5
изupdates
репозитория с500
apt
не удалось установитьlibcgmanager0:i386
версию,0.24-0ubuntu7.5
потому чтоlibcgmanager0:amd64
установлена с другой версией0.39-2ubuntu2~ubuntu14.04.1
Самое быстрое решение - принудительно установить ту же версию i386 из бэкпортов.
sudo apt-get install libcgmanager0:i386=0.39-2ubuntu2~ubuntu14.04.1
или понизить его (amd64) до любой версии из обычных репозиториев
sudo apt-get install libcgmanager0=0.24-0ubuntu7.5
Способы / инструменты, которые я пробовал:
- Отключение PPA не имеет отношения к проблеме.
- Использование
aptitude
в интерактивном режиме, приносит только решения с большим количеством удалений ( > 200 !!! ). - Используйте
apt-get install
вручную, следуя дереву зависимостей. Непрактично, поскольку зависимости первого и второго уровня не привели к значимым сообщениям о конфликте. debfoster
может генерировать рекурсивные зависимости, но только для уже установленного пакета. Однакоwine
еще не установлен.
Тема / Мои интересы:
Допустим, я хочу установить wine, не зная о проблеме libcgmanager0
пакета (или о том, libcgmanager0:amd64=0.39-2ubuntu2~ubuntu14.04.1
что уже установлено).
Я ищу способ отладки или способ узнать название пакета, вызывающего беспокойство, и быстро понять, что происходит.
Как отладить неудовлетворенные проблемы зависимостей в целом?
Возможно, в
dpkg
/apt
/aptitude
появятся новые опции, которые отслеживают преобразователь внутренних зависимостей. Это может показатьlibcgmanager0
на выходе.Если нет канонического ответа на этот вопрос, может ли кто-нибудь показать мне лучший способ создания списка рекурсивных зависимостей или смоделировать средство разрешения зависимостей с более подробной информацией, которая может помочь решить проблему?
Почему все зависимости? Потому что я хочу проверить вывод приведенных ниже команд для всех пакетов одновременно.
apt-cache policy <all-dependencies>
apt-get -s install <all-dependencies>
backports
версия?libcgmanager
в зависимости, а в зависимости? Вы упомянули рекурсивный список зависимостей. Ты пробовалapt-rdepends
?wine
(или другой уязвимый пакет) с-o Debug::pkgProblemResolver=yes
?Ответы:
Благодарности и благодарности идут на @muru .
Я искал любую команду или параметр отладки, который мог бы показать мне имя пакета проблемы (
libcgmanager0
в этом тестовом примере).apt-get -s -o Debug::pkgProblemResolver=yes install wine
У него есть подробный вывод, тихий, трудно понять это. Это должно быть хорошо, если я познакомлюсь с этим.
echo q | aptitude -s install wine
Минимальный вывод, но четкое уведомление о конфликте.
Еще один момент, который я искал, - минимизировать вывод, запрашиваемый у OP. Вместо этого для запроса
apt-cache policy
только 1-го / 2-го уровня зависимостей. Я бы запросил его для всех рекурсивных зависимостей одновременно.apt-rdepends wine 2>/dev/null | grep "^[a-zA-Z]" | sort
Имейте в виду, что
apt-rdepends
эмуляция,apt-cache
поэтому его результат может отличаться отdebfoster
. Другое дело, что оба инструмента не различают arch (i386 или amd64), они просто показывают имена.Поскольку ссылка выше может быть удалена позже, здесь приведен полный вывод всех команд выше.
источник