После обновления до Eoan у меня есть несколько пакетов, которые задерживаются и не могут быть обновлены. Похоже, все сводится к cpp
и gcc
:
$ sudo apt install gcc
The following packages have unmet dependencies:
gcc : Depends: cpp (= 4:9.2.1-3.1ubuntu1) but 4:8.3.0-1ubuntu3 is to be installed
Depends: gcc-9 (>= 9.2.1-1~) but it is not going to be installed
$ sudo apt install gcc-9
The following packages have unmet dependencies:
gcc-9 : Depends: cpp-9 (= 9.2.1-9ubuntu2) but it is not going to be installed
Depends: gcc-9-base (= 9.2.1-9ubuntu2) but 9.2.1-17ubuntu1~18.04.1 is to be installed
$ sudo apt install gcc-9-base
gcc-9-base is already the newest version (9.2.1-17ubuntu1~18.04.1).
Я не понимаю почти достаточно, чтобы интерпретировать, но вот вывод apt-cache
:
$apt-cache policy cpp
cpp:
Installed: 4:8.3.0-1ubuntu3
Candidate: 4:9.2.1-3.1ubuntu1
Version table:
4:9.2.1-3.1ubuntu1 500
500 http://archive.ubuntu.com/ubuntu eoan/main amd64 Packages
*** 4:8.3.0-1ubuntu3 100
100 /var/lib/dpkg/status
$apt-cache policy cpp-9
cpp-9:
Installed: (none)
Candidate: 9.2.1-9ubuntu2
Version table:
9.2.1-9ubuntu2 500
500 http://archive.ubuntu.com/ubuntu eoan/main amd64 Packages
Может кто-нибудь помочь мне понять, что здесь может происходить? Я отключил все репозитории, кроме репозиториев по умолчанию, безрезультатно. Я также попробовал вручную установить версию gcc-9, которая, похоже, поставляется с 19.10 (9.2.1-9ubuntu2
), но это только добавляет обиды, поскольку все остальное хочет 9.2.1-17ubuntu1~18.04.1
Основная проблема заключалась в том, что некоторые пакеты были установлены с более новой версией, чем доступно в репозиториях, и потому что их много были критические зависимости, я не мог просто очистить и переустановить их.
Решение: обновить их все в одном выражении-монстре, как это sudo apt install lib32gcc1 = 1: 9.2.1-9ubuntu2 lib32stdc ++ 6 = 9.2.1-9ubuntu2 libasan5 = 9.2 .1-9ubuntu2 libatomic1 = 9.2.1-9ubuntu2 libcc1-0 = 9.2.1-9ubuntu2 libgcc1 = 1: 9.2.1-9ubuntu2 libgomp1 = 9.2.1-9ubuntu2 libitm1 = 9.2.1-9ubuntu2 liblsan0 = 9.2.1-9ubuntu2 libstdc ++ 6 = 9.2.1-9ubuntu2 libtsan0 = 9.2.1-9ubuntu2 libubsan1 = 9.2.1-9ubuntu2 libquadmath0 = 9.2.1-9ubuntu2 ....
и так далее.
До этого мне приходилось использовать dpkg -r ...
для удаления пакетов, которые были задействованы в этой цепочке зависимостей, но вообще не были доступны через репозиторий. (Это включало пошаговый обход их цепочек зависимостей.) Я использовал политику apt-cache
, чтобы проверить доступность.