我将我的 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.
其解决办法是不有效安装。
答案1
您实际上非常接近能力建议。如果您查看安装的内容,您会发现这些软件包的 Ubuntu 18 版本仍然存在。
当我这样做时sudo aptitude install clang
,我收到了与所示相同的消息,但随后输入了“n”。然后,Aptitude 提供了另一种解决方案,即“降级”到 gcc 9。允许它这样做,并让它返回到命令提示符。然后这样做sudo apt install clang
,你会得到 clang-10。
答案2
就我个人而言,我遇到了这个问题,并通过使用他们在其文章中提到的自动安装脚本安装 LLVM 来解决它apt 包页面。
答案3
听起来你们由于某种原因遇到了冲突。根本原因可能是您在升级后启用了与 Ubuntu 20.04 不 100% 兼容的非 Ubuntu 软件包存储库?如果是这样,请考虑将它们从 中删除/etc/apt/sources.list.d/
并运行apt update
。
如果这没有帮助,我建议以aptitude
交互方式运行。它提出解决方案并允许您以半自动方式解决它们。您可能还想关注“保留”的包裹。升级它们通常会有所帮助。为此,请aptitude
以交互模式启动,然后按Shift+ U,然后G按两次。
答案4
我设法通过手动降级两个关键包来解决这个问题。
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}