Как исправить неудовлетворенные зависимости в gcc?

Недавно я обновился до Ubuntu 20.04 LTS. После обновления я увидел, что GCC сломан. Я предполагаю, что мои пакеты, связанные с GCC, были установлены из другого PPA. Я удалил все лишние PPA из своего списка и попытался переустановить неудовлетворенные зависимости.

К сожалению, я не могу установить или удалить пакет с помощью apt. Я всегда получаю сообщение:

$ sudo apt install --reinstall gcc-10-base
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 gcc-10-base : Breaks: gcc-10-base:i386 (!= 10-20200411-0ubuntu1) but 10.1.0-2ubuntu1~18.04 is to be installed
 gcc-10-base:i386 : Breaks: gcc-10-base (!= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libatomic1 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libcc1-0 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libgcc-s1 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libgcc1 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libgomp1 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libitm1 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 liblsan0 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libquadmath0 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libstdc++6 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
 libtsan0 : Depends: gcc-10-base (= 10.1.0-2ubuntu1~18.04) but 10-20200411-0ubuntu1 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

Как я могу принудительно переустановить зависимости?

0
задан 16 July 2020 в 16:11

2 ответа

В моем случае это было связано с clang-10. Я бы порекомендовал удалить его и удалить его ppa, так как теперь он предоставляется по умолчанию, а затем запустить что-то похожее на следующее:

sudo apt install clang-10/focal libstdc++-9-dev/focal libgcc-9-dev/focal libobjc-9-dev/focal libclang-common-10-dev/focal libclang1-10/focal llvm-10-dev/focal libomp-10-dev/focal gcc-9-base/focal libasan5/focal gcc-9-base/focal chrome-gnome-shell/focal cpp/focal  cpp-9/focal debhelper/focal dh-autoreconf/focal gdm3/focal gnome-control-center/focal gnome-initial-setup/focal gnome-settings-daemon/focal gnome-shell/focal gnome-shell-extension-appindicator/focal gnome-shell-extension-desktop-icons/focal gnome-shell-extension-prefs/focal gnome-shell-extension-ubuntu-dock/focal gnome-tweak-tool/focal gnome-tweaks/focal libtool/focal ubuntu-desktop/focal ubuntu-desktop-minimal/focal ubuntu-session/focal x11-xserver-utils/focal xorg/focal

По сути, сказать менеджеру пакетов, что да, вам действительно нужны все основные версии для всех этих вещей. Я думаю, что кто-то испортил версию на них, так как я получаю несколько предупреждений о переходе на более раннюю версию.

Если вам не нужен clang-10, вы можете попробовать:

sudo apt install libstdc++-9-dev/focal libgcc-9-dev/focal libobjc-9-dev/focal libclang-common-10-dev/focal libomp-10-dev/focal gcc-9-base/focal libasan5/focal gcc-9-base/focal chrome-gnome-shell/focal cpp/focal  cpp-9/focal debhelper/focal dh-autoreconf/focal gdm3/focal gnome-control-center/focal gnome-initial-setup/focal gnome-settings-daemon/focal gnome-shell/focal gnome-shell-extension-appindicator/focal gnome-shell-extension-desktop-icons/focal gnome-shell-extension-prefs/focal gnome-shell-extension-ubuntu-dock/focal gnome-tweak-tool/focal gnome-tweaks/focal libtool/focal ubuntu-desktop/focal ubuntu-desktop-minimal/focal ubuntu-session/focal x11-xserver-utils/focal xorg/focal

Но я не проверял это выше.

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

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

0
ответ дан 5 October 2020 в 13:00

Я решаю проблему с помощью aptitude. У него больше опыта в вычислении зависимостей. Вам нужно сначала отключить исходный код ubuntu-toolchain-r, а затем обновить исходный код и обновить пакеты с помощью aptitude.

Будет несколько предложений по обновлению пакетов. Не забудьте выбрать план замены gcc-10-base и сопутствующих пакетов на пакет из исходного кода или другие планы, соответствующие вашим требованиям.

0
ответ дан 13 October 2020 в 03:37

Другие вопросы по тегам:

Похожие вопросы: