Я обновил свою Linux-систему с Ubuntu 18.04 до 20.04.
Мне нужно установить комплект компиляторов clang, а команда apt
выдает ошибки. Я искал множество возможных решений, но пока ни одна из рекомендаций, которые я нашел для решения подобных проблем, не помогла. Вот что я получаю при попытке apt install clang
:
➜ ~ sudo apt-get install -f clang
Чтение списков пакетов... Готово Построение дерева зависимостей
Чтение информации о состоянии... Готово Не удалось установить некоторые пакеты. Это может означать, что у вас есть запрошена невозможная ситуация или если вы используете нестабильную дистрибутив, что некоторые необходимые пакеты еще не созданы или был перемещен из входящих. Следующая информация может помочь разрешить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости: clang : Зависит: clang-10 (>= 10~), но не будет установлен E: Невозможно исправить проблемы, у вас есть сломанные пакеты. ➜ ~
Я сделал все виды apt-get update
и apt-get upgrade
. Я также пытался перечислить все пакеты один за другим, но список продолжает расти, и это не решило проблему.
Редактировать: Вслед за @Martin Konrad я попробовал aptitude:
➜ ~ sudo aptitude install clang
The following NEW packages will be installed:
clang clang-10{ab} lib32gcc-s1{ab} lib32gcc1{ab} lib32stdc++6{ab}
libc6-i386{a} libclang-common-10-dev{ab} libclang-cpp10{ab} libffi-dev{a}
libobjc-9-dev{ab} libobjc4{ab} libomp-10-dev{a} libomp5-10{a} libpfm4{a}
libz3-4{a} libz3-dev{a} llvm-10{a} llvm-10-dev{ab} llvm-10-runtime{a}
llvm-10-tools{a} python3-pygments{a}
0 packages upgraded, 21 newly installed, 0 to remove and 9 not upgraded.
Need to get 58.4 MB of archives. After unpacking 381 MB will be used.
The following packages have unmet dependencies:
lib32stdc++6 : Depends: gcc-10-base (= 10-20200411-0ubuntu1) but 10-20200416-0ubuntu1~18.04 is installed
libobjc4 : Depends: gcc-10-base (= 10-20200411-0ubuntu1) but 10-20200416-0ubuntu1~18.04 is installed
lib32gcc-s1 : Depends: gcc-10-base (= 10-20200411-0ubuntu1) but 10-20200416-0ubuntu1~18.04 is installed
clang-10 : Depends: libclang1-10 (= 1:10.0.0-4ubuntu1) but 1:10.0.1~++20200519100828+f79cd71e145-1~exp1~20200519201452.38 is installed
lib32gcc1 : Depends: gcc-10-base (= 10-20200411-0ubuntu1) but 10-20200416-0ubuntu1~18.04 is installed
libclang-cpp10 : Depends: libllvm10 (= 1:10.0.0-4ubuntu1) but 1:10.0.1~++20200519100828+f79cd71e145-1~exp1~20200519201452.38 is installed
libobjc-9-dev : Depends: gcc-9-base (= 9.3.0-10ubuntu2) but 9.3.0-11ubuntu0~18.04.1 is installed
Depends: libgcc-9-dev (= 9.3.0-10ubuntu2) but 9.3.0-11ubuntu0~18.04.1 is installed
libclang-common-10-dev : Depends: libllvm10 (= 1:10.0.0-4ubuntu1) but 1:10.0.1~++20200519100828+f79cd71e145-1~exp1~20200519201452.38 is installed
llvm-10-dev : Depends: libllvm10 (= 1:10.0.0-4ubuntu1) but 1:10.0.1~++20200519100828+f79cd71e145-1~exp1~20200519201452.38 is installed
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) clang [Not Installed]
2) clang-10 [Not Installed]
3) lib32gcc-s1 [Not Installed]
4) lib32gcc1 [Not Installed]
5) lib32stdc++6 [Not Installed]
6) libclang-common-10-dev [Not Installed]
7) libclang-cpp10 [Not Installed]
8) libobjc-9-dev [Not Installed]
9) libobjc4 [Not Installed]
10) llvm-10-dev [Not Installed]
Leave the following dependencies unresolved:
11) llvm-10 recommends llvm-10-dev
Accept this solution? [Y/n/q/?] Y
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
Его решение — неэффективная установка.
Похоже, у вас конфликты по какой-то причине. Основная причина может заключаться в том, что после обновления вы включили не -репозитории пакетов Ubuntu, которые не на 100% совместимы с Ubuntu 20.04? Если это так, подумайте об удалении их из /etc/apt/sources.list.d/
и запустите apt update
.
Если это не поможет, я бы рекомендовал запустить aptitude
в интерактивном режиме.Он предлагает решения и позволяет решать их полуавтоматически -. Вы также можете следить за «удерживаемыми» пакетами. Часто помогает обновить их. Для этого запустите aptitude
в интерактивном режиме и нажмите Shift + U , затем дважды G .
На самом деле вы довольно близко подошли к предположению о способностях. Если вы посмотрите на то, что установлено, вы увидите, что версии этих пакетов для Ubuntu 18 все еще присутствуют.
Когда я сделал sudo aptitude install clang
, я получил такое же сообщение, как показано, но затем набрал 'n'. Затем Aptitude предлагает другое решение, которое заключается в том, чтобы предложить «откатиться» до gcc 9. Разрешите ему это сделать и дайте ему вернуться в командную строку. Затем выполните sudo apt install clang
и вы получите clang -10.
Мне удалось исправить это, понизив вручную два ключевых пакета.
sudo apt install libclang1-10=1:10.0.0-4ubuntu1 libllvm10=1:10.0.0-4ubuntu1
Полная команда aptitude
позволила мне продолжить, но удалила некоторые пакеты, которые следует отметить.
The following NEW packages will be installed:
clang clang-10{a} libclang-common-10-dev{a} libclang-cpp10{a} libomp-10-dev{a} libomp5-10{a}
llvm-10{a} llvm-10-dev{a} llvm-10-runtime{a} llvm-10-tools{a}
The following packages will be REMOVED:
libomp-11-dev{a} libomp5-11{a}