编辑-简介:
我问这个问题是为了了解 APT 的行为,它从那时起应该已经发生了很大的变化。我不想在当前系统上安装这些旧软件包。
- 我知道 Gazebo Classic <11 已停产
- 我知道 Ubuntu (LTS) < 22.04 (Focal Fossa) 和 Ubuntu < 23.10 (Mantic Minotaur) 已停产
- 我知道为一个版本打包的包可能与其他版本中的包存在依赖性冲突
如果你查看Gazebo 3.0安装教程,它说Gazebo 3.0可以安装在Ubuntu Raring Ringtail版本上。
但如果你查看dists/raring/main/binary-amd64/,该Packages
文件的大小为 0 字节。
因此,它以某种方式退回到使用 Precise Pangolin 中提供的软件包。但我不明白这是怎么发生的。precise
如果我们必须使用 Raring,我们是否应该手动添加该存储库?
使用的命令是sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu raring main" > /etc/apt/sources.list.d/gazebo-latest.list'
,所以它只查看raring
存储库。
该软件包gazebo3
仅针对 Precise Pangolin 和 Trusty Tahr 进行了打包(说明中未列出),并且绝对应该使用 Precise 的版本,因为 Trusty 较新。
另一个例子:
根据Gazebo 2.2安装教程,它说Gazebo 2.2可以安装在从Precise到Trusty的每个版本上。
它说Precise to Roaring应该使用gazebo-current
,Saucy和Trusty应该使用gazebo2
。
如果您检查pool/main/g/gazebo-current/,gazebo-current
(v2.2.5),它仅打包为precise
,同样,pool/main/g/gazebo2/,gazebo2
(v2.2.6)仅打包为trusty
。
因此,在这种情况下,Quantal Quetzel 和 Raring Ringtail 将回落到 Precise Pangolin,而 Saucy Salamander 将前进到 Trusty Tahr。
和前面的情况一样,、和Packages
中的文件都是 0 字节。这甚至与他们是否是 LTS 无关。Yakkety Yak 和 Zesty Zapus 有非空文件,它们列出了在pool/main/g/中也可用的 Gazebo 软件包(对于 Yakkety 和Zesty )。quantal
raring
saucy
Packages
gazebo8
gazebo7
gazebo8
包管理器如何知道要使用哪个包?甚至似乎没有标准格式,例如回退到以前的版本。由于我们指定的是版本代号而不是版本号,APT 甚至不应该能够推断出有旧版本或新版本可供提取。
后面的说明只是说sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable 'lsb_release -cs' main" > /etc/apt/sources.list.d/gazebo-stable.list'
,所以无论发布是什么,都会在 中指定sources.list.d
。如果只有打包它的版本能够安装它,那就有意义了。但这里的情况并非如此。
所以我的问题是,这些 0 字节文件如何Packages
与 APT 查询一起使用?当 APT 遇到这样的 repos 时,如何选择另一个版本?
dists/raring/Release文件还显示它Packages
是 0 字节,因此它不是像此处提到的损坏存储库的实例。
列出的存储库并未“损坏”。
那些旧的存储库已关闭,其中的包已被撤回。
那些旧的存储库根本无法使用。尝试使用它们时出现 APT 错误是预期的行为。
不再支持 18.04 之前的 Ubuntu 版本,并且这些存储库已关闭(例外:Pro/esm)。
Apt 不会“选择另一个版本”;它将仅使用 apt 源中指定的版本。它不知道任何其他版本。