Por razões que não posso controlar, estou sendo forçado a rodar meus próprios rpms para PHP no CentOS 7.4. Eu construí rpms para php 7.2.5 e os instalei em um repositório local. yum install php
pega a versão local e o pacote é instalado em /usr/local. Meu problema é com php-pear. Por algum motivo, o yum quer pegar a versão padrão do php-pear em vez da minha versão, mesmo que minha versão tenha o número de versão mais alto.
# 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
...
Eu defini a prioridade do repositório nci-f para 1 sem efeito. Sei que posso usar yum install php-pear-7.2.5-1.el7.centos
para instalar o pacote específico, mas ambos desejam usar o comando mais simples (em mais de 400 servidores) e desejam garantir que as atualizações funcionem no futuro.
Além disso, no meu arquivo .spec para o pacote php-pear eu tenho a linha
Obsoletes: php-pear <= 1:1.9.4
Por que o yum está escolhendo o pacote de versão inferior e como posso fazer com que ele prefira meu pacote?
Veja a época (
1
em ), ela substitui seus pacotes de1:1.9.4-21
época (padrão) .0
O epoch foi introduzido nos pacotes rpm justamente para poder "consertar" os números de versão que andam para trás. Use com extrema cautela.
Além disso, os pacotes RHEL/Centos provavelmente incluem muitas correções/ajustes locais. Eu sugiro que você comece com os pacotes de fontes oficiais e ajuste-os, substituindo as fontes por versões mais recentes conforme necessário.