如何在 Ubuntu 20.4 上安装 clang-10

Mic*_*hel 13 ubuntu apt dependencies clang

我将我的 Linux 机器从 Ubuntu 18.04 升级到 20.04。

我需要安装 clang 编译器套件,apt命令给了我错误。我已经搜索了许多可能的解决方案,但到目前为止,我发现的解决类似问题的建议都没有帮助。这是我尝试时得到的apt install clang

? ~ sudo apt-get install -f clang
读取软件包列表...完成 构建依赖树
读取状态信息...完成 无法安装某些软件包。这可能意味着您请求了一个不可能的情况,或者如果您使用的是不稳定的发行版,一些必需的包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:

以下软件包具有未满足的依赖项: clang : Depends: clang-10 (>= 10~) 但它不会被安装 E: 无法纠正问题,您持有损坏的软件包。? ~

我做过各种apt-get updateapt-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.
   
Run Code Online (Sandbox Code Playgroud)

其解决方法是无法有效安装。

小智 10

您实际上非常接近能力建议。如果您查看安装的内容,您会发现这些软件包的 Ubuntu 18 版本仍然存在。

当我这样做时sudo aptitude install clang,我收到了与所示相同的消息,但随后输入了“n”。然后,Aptitude 提供了另一种解决方案,即“降级”到 gcc 9。允许它这样做,并让它返回到命令提示符。然后这样做sudo apt install clang,你会得到 clang-10。


Mar*_*rad 2

听起来你们由于某种原因遇到了冲突。根本原因可能是您在升级后启用了与 Ubuntu 20.04 不 100% 兼容的非 Ubuntu 软件包存储库?如果是这样,请考虑将它们从 中删除/etc/apt/sources.list.d/并运行apt update

如果这没有帮助,我建议aptitude以交互方式运行。它提出解决方案并允许您以半自动方式解决它们。您可能还想关注“保留”的包裹。升级它们通常会有所帮助。为此,请aptitude以交互模式启动,然后按Shift+ U,然后按G两次。

  • 我如何知道要从该目录中删除哪些存储库?我安装了 aptitude 并会尝试。 (3认同)