相同的包 – 多个回购

如果同一个软件包在多个存储库中可用,Ubuntu会选择从哪个存储库下载软件包? 假设最初从存储库X安装了包A,之后我添加了包含A的repo Y.将选择哪个repo来更新包? 此外,如果我完全删除此软件包并尝试重新安装,那么Ubuntu将首选哪个repo来安装软件包?

默认情况下,安装具有最高版本号的软件包,无论其来自哪个存储库, 除非其版本号低于当前安装的软件包版本(例如,如果您下载了更高版本,则会发生这种情况)一个.deb包并手动安装它。 在几个存储库具有相同(最高)版本的软件包的极不可能的情况下,该软件包是从sources.list文件中首先出现的软件包安装的。

但是,您可以通过根据各种条件为某些包分配不同的优先级来更改此设置。 上一段对于默认设置是正确的,因为默认情况下所有包都具有优先级500.但是,如果包的不同版本具有不同的优先级,则将安装具有最高优先级的版本,并且版本号将仅用作绑定 – 断路器,如果多个版本具有相同(最高)的优先级。 此外,如果优先级最高的程序包的优先级至少为1000,则即使其版本低于当前安装的版本,也会安装它。

优先级在/etc/apt/preferences中管理,并记录在man apt_preferences 。 请参阅我的答案,了解如何使用它们的示例。