apt 将什么视为软件包的“最新”版本?

apt 将什么视为软件包的“最新”版本?

我想知道 apt 在发布同一软件包的多个主要版本时的行为是什么。例如,如果我有一个名为 的软件包foo,其最新版本为1.0.0,并且我发布了版本2.0.0,然后发布了版本,那么在运行和1.1.0时哪个会被视为最新软件包:最后发布的软件包(在本例中为)还是版本号最高的软件包(在本例中为)?sudo apt updatesudo apt install foo1.1.02.0.0

答案1

默认情况下,apt下载版本号最高的包(即使这不是最后发布的版本)。

然而,如果两个包都在单独的存储库中,则可以使用 安装早期版本sudo apt install foo=1.1.0

之后,您可以阻止该特定包升级到版本 2.0.0 sudo apt-mark hold foo

(要恢复此行为,你必须取消保持包裹)。

答案2

它基于按顺序评估的几个条件:

  1. 软件包优先级。优先级越高,该特定软件包将被优先考虑,即使这意味着“降级”。如果两个软件包的优先级相同,则将继续
  2. 纪元。冒号前的数字,通常用于表示上游版本控制的变化。如果未指定纪元,则假定为 0。
  3. 上游版本。是软件包的裸版本,通常位于连字符之前。它的评估方式与其他使用点的版本方案相同。每个值都按位置评估,按点划分的组从左到右进行评估。确切的算法是Debian 政策文档中描述
  4. Debian 的版本。连字符后。与上游版本相同。

换句话说,它将始终尝试安装更高的版本号,除非您包含不同的时代或使用优先级固定它。dpkg 将忽略所有这些,只确保依赖关系得到满足。

相关内容