为什么 yum 选择较低版本来安装

为什么 yum 选择较低版本来安装

由于我无法控制的原因,我被迫在 CentOS 7.4 下为 PHP 推出自己的 rpm。我已经为 php 7.2.5 构建了 rpm 并将它们安装在本地存储库中。yum install php选择本地版本并将软件包安装在 /usr/local 下。我的问题是 php-pear。由于某种原因,yum 希望选择 php-pear 的库存版本而不是我的版本,即使我的版本具有更高的版本号。

# yum --showduplicates list php-pear
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
php-pear.noarch    1.10.5-1.el7.centos    nci-f
php-pear.noarch    1:1.9.4-21.el7         base
php-pear.noarch    1:1.9.4-21.el7         base
php-pear.noarch    1:1.9.4-21.el7         base
# yum install php-pear
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package php-pear.noarch 1:1.9.4-21.el7 will be installed
--> Processing Dependency: php-bz2 for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-tokenizer for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-xml for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-cli for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-zlib for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-posix for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-ftp for package: 1:php-pear-1.9.4-21.el7.noarch
--> Processing Dependency: php-pcre for package: 1:php-pear-1.9.4-21.el7.noarch
--> Running transaction check
 ...

我已将 nci-f 存储库的优先级设置为 1,但没有效果。我知道我可以用来yum install php-pear-7.2.5-1.el7.centos安装特定的软件包,但都想使用更简单的命令(在 400 多台服务器上),并希望确保将来更新可以正常工作。

另外,在 php-pear 包的 .spec 文件中,我确实有以下行

Obsoletes: php-pear  <= 1:1.9.4

为什么 yum 选择较低版本的软件包以及如何让它更喜欢我的软件包?

答案1

查看纪元(1in 1:1.9.4-21),它会覆盖您的(默认)纪元0包。

在 rpm 包中引入纪元正是为了能够“修复”向后的版本号。与使用极端警告。

此外,RHEL/Centos 软件包可能包含许多本地修复/调整。我建议您从官方源代码包开始并调整它们,根据需要用更新的版本替换源代码。

相关内容