我正在尝试配置一个构建引擎(Bazel)来使用gcc-7。为此,我需要指向所需的所有.deb包的链接。
gcc-7的依赖关系之一是libatomic1 (>= 7.5.0-6 ubuntu2)。我意识到这是“大于或等于”,但如果我想使用gcc-7发行的原始图书馆,我在哪里可以得到它们?
例如,如果我做了apt download --print-uris libatomic1=7.5.0-6ubuntu2,为什么要告诉我:
E: Version '7.5.0-6ubuntu2' for 'libatomic1' was not found但是,当我执行apt show libgcc-7-dev时,我会看到libatomic1>=7.5.0-6ubuntu2被列为依赖项。我在哪里能找到这个脂原子1=7.5.0-6 ubuntu2?
我在想,我可能会在http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-7/中找到库包,但它不在那里。
发布于 2022-02-14 14:57:23
如果您检查这里,您将看到安全更新取代了旧版本。由于安全原因,旧版本不再可用。
我使用“焦点”作为发行版在packages.ubuntu.com进行搜索。

旧版本无法使用的另一个原因是,libatomic1的标准版本不再由gcc-7构建。正如您可以看到的这里,当前版本的Ubuntu焦点是建立在gcc-10 (在右边的"Ubuntu“下)。
如果你愿意,你可以下载gcc-7的源代码,然后从那里构建libatomic1。这可能不是你想要做的事情,但这是可能的。
可以在/etc/apt/sources.list文件中启用源,然后运行:
sudo apt source gcc-7或者您可以从packages.ubuntu.com下载源代码,在右侧,您将看到三个下载源代码的选项。

此外,应该注意的是,如果要构建某些内容,则需要下载所需的构建依赖关系:
sudo apt build-dep gcc-7发布于 2022-02-15 02:22:52
Apt存储库通常只包含给定版本的包的一个版本。如果您想要旧的Ubuntu包,那么afaict,您必须查看“发布历史”上的源代码包。然后,您可以跟踪到特定版本的链接,然后是到构建的链接,最后是指向各个包的链接。
但是,我不相信7.5.0-6ubuntu 2版本的libatomic1包确实存在。当一个新的主要版本gcc的源代码包被添加到Debian或Ubuntu发行版中时,它将接管gcc运行时支持库的库包(libgcc、lib原子、libasan等)。
然后在下一次上传时修改前一个主要版本的源代码包,使其不再构建已被新的主要版本接管的包,如果不以这种方式修改,那么我很确定上传将被归档软件拒绝(我知道它在Debian中,我对Ubuntu的归档设置不太熟悉)
您可以下载最新的gcc-7源代码包,并对其进行修改以重新启用库的构建,但是这样做可能会导致更多的问题,而不是解决问题。
https://askubuntu.com/questions/1392870
复制相似问题