如果两个存储库中都有相同的应用程序,YUM 如何知道使用哪个存储库进行安装?

如果两个存储库中都有相同的应用程序,YUM 如何知道使用哪个存储库进行安装?

示例场景:安装 Nginx

我正在安装 Nginx。为了获取最新的 repo,我从 Nginx 网站下载 RPM。如下所示:

rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

由于我需要安装 PHP-FPM,因此我还从其他地方下载了几个 repos,如下所示:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm


rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

现在第一个 repo 也包含 Nginx。因此当我输入:

yum install nginx

YUM 将使用哪个 repo 来安装 Nginx?

谢谢!

答案1

如果两个存储库中的软件包名称完全相同,yum 将按字母顺序解析。

因此它将从自然顺序中第一个 repo 下载 rpm。通常根据我的经验,我总是安装 yum 优先级插件,这将帮助我根据用户定义的标准对 repos 进行优先级排序。您可以在此处获取更多信息: http://wiki.centos.org/PackageManagement/Yum/Priorities

编辑:

我接受的答案并不正确。如果两个存储库中的软件包名称完全相同,yum 将不会按字母顺序解析。迈克尔是对的。这是 redhat 关于此场景的官方答案:

因此在这种情况下,yum 将简单地查询存储库,无论哪个存储库获得第一个获取查询,都会回复并从中获取包及其依赖项。不会有任何冲突。下载的包本质上是随机的。

答案2

默认情况下,您将获得任何可用的最高版本的软件包已启用存储库。存储库名称完全不相关。

当然,各种 yum 插件(例如 priority 和 versionlock)可以改变您可用的软件包或软件包版本。

相关内容