为什么找不到一些旧版本的软件包

Emi*_*eil 5 apt dependencies

我正在尝试配置构建引擎(Bazel)以使用 gcc-7。为此,我需要指向所有所需 .deb 包的链接。

gcc-7 的依赖项之一是 libatomic1 (>= 7.5.0-6ubuntu2)。我意识到这是“大于或等于”,但如果我想使用随 gcc-7 分发的原始库,我可以在哪里获得它们?

例如,如果我这样做,apt download --print-uris libatomic1=7.5.0-6ubuntu2为什么会告诉我:

E: Version '7.5.0-6ubuntu2' for 'libatomic1' was not found
Run Code Online (Sandbox Code Playgroud)

但当我apt show libgcc-7-dev这样做时我看到了libatomic1>=7.5.0-6ubuntu2被列为依赖项。我在哪里可以找到这个 libatomic1=7.5.0-6ubuntu2 ?

我想我可能会在http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-7/中找到库包,但它不在那里。

mch*_*hid 6

如果你检查这里,您将看到安全更新取代了旧版本。由于安全原因,旧版本不再可用。

我使用“focal”作为发行版在packages.ubuntu.com上进行了搜索。

在此输入图像描述

旧版本不可用的另一个原因是 libatomic1 的标准版本不再是从 gcc-7 构建的。正如你在这里看到的所看到的,Ubuntu Focal 可用的当前版本是从 gcc-10 构建的(位于右侧“Ubuntu 资源”下)。

如果需要,您可以下载 gcc-7 的源代码并从那里构建 libatomic1。这可能不是您想要做的事情,但这是可能的。

您可以在文件中启用源/etc/apt/sources.list,然后运行:

sudo apt source gcc-7
Run Code Online (Sandbox Code Playgroud)

或者您可以从packages.ubuntu.com下载源代码,在右侧,您将看到三个下载源代码的选项。

在此输入图像描述

另外,应该注意的是,如果您要构建某些内容,则需要下载所需的构建依赖项:

sudo apt build-dep gcc-7
Run Code Online (Sandbox Code Playgroud)