我将我的 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 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} …
Run Code Online (Sandbox Code Playgroud) 在这里我找到了如何安装 clang3.8 的说明:http ://llvm.org/apt/
所以我执行了:
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
结果:
--2015-09-19 12:53:09-- http://llvm.org/apt/llvm-snapshot.gpg.key
Resolving llvm.org (llvm.org)... [sudo] password for user: 192.17.58.186
Connecting to llvm.org (llvm.org)|192.17.58.186|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3145 (3,1K) [application/pgp-keys]
Saving to: ‘STDOUT’
100%[======================================>] 3.145 --.-K/s in 0,002s
2015-09-19 12:53:10 (1,87 MB/s) - written to stdout [3145/3145]
OK
Run Code Online (Sandbox Code Playgroud)
进而:
sudo apt-get install clang-3.8 clang-3.8-doc libclang-common-3.8-dev libclang-3.8-dev libclang1-3.8 libclang1-3.8-dbg libllvm-3.8-ocaml-dev libllvm3.8 libllvm3.8-dbg lldb-3.8 llvm-3.8 llvm-3.8-dev llvm-3.8-doc llvm-3.8-examples llvm-3.8-runtime clang-modernize-3.8 clang-format-3.8 …
Run Code Online (Sandbox Code Playgroud) 我已经从 Ubuntu 14.07、Centos 7 和 Fedoara 22 上clang-tidy
的软件包安装了 clang 。我想使用但既找不到软件包,也无法在不从源代码安装 clang 的情况下安装它。这是我宁愿不做的事情。
我错过了什么?
我可能很密集,如果是这样,请嘲笑我。
谷歌搜索揭示了这个 slashdot 故事产生了这个自 2016 年以来没有提交过的 github 存储库。有关于github.com上市22602个叉,但这些都将是主要(如果不是几乎所有的),只是为发展叉托沃兹/ Linux的。
我之前读过 Linux 已经变得相当笨拙。在我看来,至少在用户体验方面,Linux 比我记忆中的 10 多年前更加精致(显然这不是对内核的准确评估;我现在才阅读 K&R,从未涉足内核源代码,除了粗略一瞥会产生“哇,我无法理解这一行”,但我知道内核中有关 linux-on-the-laptop 功能的大量开发,例如) . 无论如何,我知道我已经看到 BSD 人抱怨 Linux cruft。考虑到基于 vim cruft 的 vim 的 neovim 分支,我认为类似的努力会对内核有所回报。
提示这个问题的是LWN 上的这篇文章,讨论了使用 clang 编译 Linux 的尝试。我读到内核使用了许多特定于 gcc 的怪癖/特殊功能进行优化(尽管与我的记忆相比,链接的文章似乎淡化了它们),我开始怀疑是否有人试图重构/分叉内核来制作它更便携,或者至少可以在 gnu 环境之外编译。我也明白 gcc 本身很粗鲁,Linus 自己也批评过。
我知道我个人对 RMS 和 GNU 的厌恶以及对没有 GNU 的 Linux 的兴趣并不孤单;我知道Alpine Linux不需要 gnu 工具,但内核仍然是用 gcc 编译的,不是吗?有很多关于替代工具链和用户空间软件的参考,但我特别想知道内核以及是否有消除 gcc/gnu 依赖的分叉——认为这是标题的一个附属问题——在我看来这将是一个废物单独问吧。
clang ×4
apt ×2
ubuntu ×2
centos ×1
dependencies ×1
fedora ×1
gcc ×1
gnu ×1
linux-kernel ×1
linux-mint ×1