由于我无法控制的原因,我被迫在 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
in1:1.9.4-21
),它会覆盖您的(默认)时代0
包。正是在 rpm 包中引入了 epoch,以便能够“修复”倒退的版本号。使用时要格外小心。
此外,RHEL/Centos 软件包可能包含许多本地修复/调整。我建议您从官方源代码包开始并对其进行调整,并根据需要将源代码替换为较新的版本。