仅使用官方软件包在 Debian 上安装第二个 G++?

仅使用官方软件包在 Debian 上安装第二个 G++?

我的项目需要一个更新的 G++,但所有教程都会告诉您下载源代码、编译它们并“简单地”安装它们然后使用它。这是我不想要的,因为它的重现性不太好。

然而,Debian 的存储库中确实有更新的软件包(bullseye、testing、unstable 等),我可以保留和共享这些软件包。我知道这样做几乎会让我得到一个 FrankenDebian,但它比使用源代码或任何可疑的存储库要好得多(一些教程甚至建议 Debian 使用 ppa...)。

我还想保留 Debian buster 的 G++,因为很多东西肯定会使用它并且避免此类错误:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.30' not found (required by /lib/x86_64-linux-gnu/libselinux.so.1)

error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

肯定会避免这里出现一些令人头痛的问题。

我还听说过设置替代方案等,但我需要首先安装正确的软件包。

这是我的问题:如何在 Debian buster 上安装另一个 G++,而不需要按照源代码的方式安装?

答案1

目前这是可能的(并且毫无疑问将保持如此,因为 Debian 11 在发布之前被冻结),只要您只需要gcc(而不是g++)。例如,您需要将 Buster 向后移植和 Bullseye 添加到源中,并适当配置固定

Package: *
Pin: release n=buster
Pin-Priority: 500

Package: *
Pin: release n=buster-updates
Pin-Priority: 500

Package: *
Pin: release n=buster-backports
Pin-Priority: 110

Package: *
Pin: release n=bullseye
Pin-Priority: 100

然后您就可以安装gcc-10,这不需要对libc6或进行任何升级libstdc++6apt在解决依赖关系时遇到困难,但aptitude管理得很好,并且它们被包含在内(我的测试中有 22 个升级包,其中大多数是 GCC 或 binutils 包)。

g++-10是一个不同的故事;它需要更新libstdc++6,并且升级本质上涉及升级到测试。

正如你所说,尽管如此结果是“FrankenDebian”,因此您可能需要考虑设置 Debian 测试schroot或使用debian:11容器。

相关内容