由于我无法控制的原因,我被迫在 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
查看纪元(1
in 1:1.9.4-21
),它会覆盖您的(默认)纪元0
包。
在 rpm 包中引入纪元正是为了能够“修复”向后的版本号。与使用极端警告。
此外,RHEL/Centos 软件包可能包含许多本地修复/调整。我建议您从官方源代码包开始并调整它们,根据需要用更新的版本替换源代码。