如果两个 repos 中存在相同的软件(不同版本),则都添加
来源列表
那么当我运行安装命令时哪一个会被安装
apt-get 安装 x
?
此外,如果两个 repo 都提供同名的应用程序,我该如何选择一个 repo 而不是另一个?
答案1
(此答案基于 Ubuntu 的默认设置,具有默认存储库首选项)
如果同一个软件有不同的版本,Apt 将始终尝试使用受依赖性约束的最新版本的软件。
*请注意,Apt 还会查看存储库的优先级,如果优先级较高的存储库版本较低,Apt 将不会升级该软件包。在默认的 Ubuntu 安装中,所有启用的存储库的优先级均为 500,但 backport 存储库除外,其优先级为 100。因此,如果软件在 backport 存储库中有更高版本的软件包,则不会使用sudo apt-get install x
命令升级该软件。您需要使用以下命令明确告诉 apt 使用该存储库:sudo apt-get install x/precise-backports
。*
但是,如果两个 repo 提供相同版本的相同软件,那么 Apt 将从文件中第一个出现的存储库中安装软件sources.list
。
我引用的是apt_preference 手册页:
Several instances of the same version of a package may be available when the sources.list(5) file contains references to more than one source. In this case apt-get downloads the instance listed earliest in the sources.list(5) file. The APT preferences file does not affect the choice of instance, only the choice of version.
答案2
这取决于哪个版本在哪里可用。要查看将安装哪个版本,并添加相关存储库,您可以运行apt-cache policy x
,以遵循您的示例,它将显示已安装的版本和候选版本(如果您安装或升级,则将安装该版本)。