![如果两个存储库中都有相同的应用程序,YUM 如何知道使用哪个存储库进行安装?](https://linux22.com/image/610695/%E5%A6%82%E6%9E%9C%E4%B8%A4%E4%B8%AA%E5%AD%98%E5%82%A8%E5%BA%93%E4%B8%AD%E9%83%BD%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8CYUM%20%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E4%BD%BF%E7%94%A8%E5%93%AA%E4%B8%AA%E5%AD%98%E5%82%A8%E5%BA%93%E8%BF%9B%E8%A1%8C%E5%AE%89%E8%A3%85%EF%BC%9F.png)
示例场景:安装 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)可以改变您可用的软件包或软件包版本。