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

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

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

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

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

E: Version '7.5.0-6ubuntu2' for 'libatomic1' was not found

但当我这样做时,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/但它不在那里。

答案1

如果你检查这里,您将看到安全更新已替换旧版本。出于安全原因,旧版本不再可用。

我搜索了packages.ubuntu.com使用“焦点”作为分布。

在此处输入图片描述

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

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

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

sudo apt source gcc-7

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

在此处输入图片描述

另外,需要注意的是,如果您要构建某些东西,您将需要下载所需的构建依赖项:

sudo apt build-dep gcc-7

答案2

Apt 存储库通常只包含给定发行版的一个软件包版本。如果您想要较旧的 Ubuntu 软件包,那么据我所知,您必须查看启动板上的源软件包的“发布历史记录”。然后,您可以点击链接转到特定版本,然后点击构建链接,最后点击单个软件包的链接。

但是我不相信版本 7.5.0-6ubuntu2 的 libatomic1 包曾经存在过。当将新的 gcc 主要版本的源包添加到 Debian 或 Ubuntu 版本中时,它会接管 gcc 运行时支持库(libgcc、libatomic、libasan 等)的库包。

上一个主要版本的源包在下次上传时会被修改,这样它就不再构建已被新主要版本接管的包,如果它没有以这种方式修改,那么我很确定上传会被存档软件拒绝(我知道它会在 Debian 中,我不太熟悉 Ubuntu 的存档设置)

您可以下载最新的 gcc-7 源包并对其进行修改以重新启用库的构建,但这样做可能会导致比解决的更多问题。

相关内容