编辑-简介:
我问这个问题是为了了解 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
因此,它不知何故又回到使用 Precise Pangolin 中提供的包。但我不知道这是怎么发生的。如果我们必须使用它,我们是否应该手动在 Raring 中添加 repo ?
使用的命令是sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu raring main" > /etc/apt/sources.list.d/gazebo-latest.list'
,因此它仅查看raring
repo。
该软件包gazebo3
仅适用于 Precise Pangolin 和 Trusty Tahr(说明中未列出),并且应该使用 Precise 的版本,因为 Trusty 较新。
另一个例子:
根据Gazebo 2.2安装教程,其中表示 Gazebo 2.2 可以安装在从 Precise 到 Trusty 的每个版本上。
它说应该使用 Precise to Roaringgazebo-current
并且应该使用 Saucy and Trusty gazebo2
。
如果你检查池/主/g/gazebo-current/,gazebo-current
(v2.2.5)它只针对precise
和同样,游泳池/主/g/gazebo2/,gazebo2
(v2.2.6)仅适用于trusty
。
因此在这种情况下,Quantal Quetzel 和 Raring Ringtail 将退而求其次使用 Precise Pangolin,而 Saucy Salamander 将转向 Trusty Tahr。
和上一个情况一样,和中Packages
的文件为 0 字节。这甚至与它们是 LTS 无关。Yakkety Yak 和 Zesty Zapus 有非空文件,它们列出了可用的 Gazebo 软件包quantal
raring
saucy
Packages
池/主/g/也是(gazebo8
对于 Yakkety 和gazebo7
Zesty 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 遇到这样的存储库时,它如何选择另一个版本?
这dists/raring/发布文件还显示为Packages
0 字节,因此它不是上述损坏的存储库的实例这里。
答案1
列出的存储库并非“损坏”。
这些旧存储库已关闭,其中的软件包已被撤回。
这些旧存储库根本无法使用。尝试使用它们时出现 Apt 错误是预期行为。
Ubuntu 18.04 之前的版本不再受支持,并且这些存储库已关闭(例外:Pro/esm)。
Apt 没有“选择其他版本“;它将仅使用您的 apt 源中指定的版本。它不知道任何其他版本。