如何在 Ubuntu 20.4 上安装 clang-10

如何在 Ubuntu 20.4 上安装 clang-10

我将我的 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} 

相关内容