pacotes RPM com dependências baseadas em uma versão principal do software (ou seja, php 5.3 com seus addons e, em seguida, php 5.4)

2

Cenário:

PHP5.3

  • php-5.3.21-1_x86_64.rpm (base)
  • php-pecl-memcache-3.0.6-1_x86_64.rpm (depende do acima por causa da alteração interna da versão do PHP ABI)

PHP5.4

  • php-5.4.13-1_x86_64.rpm (base)
  • php-pecl-memcache-3.0.7-1_x86_64.rpm (depende do acima por causa da alteração da versão interna do PHP ABI)

Esta é uma pergunta mais geral sobre RPMs e versionamento, mas vou relacioná-la especificamente ao PHP, já que é a parte que estou olhando, no momento. No entanto, ele também pode estar relacionado a qualquer biblioteca / pacote que requeira uma versão específica de API / ABI de um software (aplicável igualmente ao apache / httpd, python, etc).

O problema

Atualmente estou atualizando para o PHP 5.4, e procurando uma maneira de trabalhar com o yum / rpm para permitir que alguns servidores executem o legado PHP 5.3, eu gostaria de saber a melhor maneira de conseguir isso. O problema com o acima é (se os pacotes estão todos dentro do repositório yum), o servidor PHP5.3 (versão bloqueada para 5.3) vê uma 'atualização' para php-pecl-memcache (3.0.6 < 3.0. 7) e tenta uma atualização, mas o hit é um erro de dependência, pois o pacote php-pecl-memcache-3.0.7 requer uma versão ABI do PHP lançada com pacotes 5.4.

Basicamente, o que estou tentando descobrir é:

  • Existe uma maneira de fazer o yum dizer, ' se eu tenho pacotes PHP 5.3 instalados, então ignorar atualizações dependentes da nova versão '?
  • Em segundo lugar, isso é conseguido usando um sistema de controle de versão que ainda não pensei, ou a palavra-chave Epoch dentro do RPM / RPMBuild?
  • Eu vi outra abordagem de criação de php54-common-5.4.11 ..., httpd24-devel-2.4.2-, python27, etc (isso parece um pouco confuso, porém, quando o esquema de versões anteriores não especifique a versão principal como parte do nome)
  • Finalmente, talvez a única maneira de fazer isso seja separar os pacotes em repositórios diferentes, o que coloca outro problema interessante ao nomear o pacote / versão / revisão para que você saiba do nome do arquivo qual versão / versão / época da API foi criada para. (php-pecl-memcache-3.0.7_php54_x86_65.rpm)

O que me preocupa quando penso nisso é que estou preocupado apenas com pequenos lotes de pacotes no momento. Como os mantenedores do pacote RHEL / Fedora lidaram com isso ao atualizar uma versão principal que afeta milhares de bibliotecas (atualização python de 2.6 para 2.7, ou perl / ruby / etc)

Obrigado, tentei manter a pergunta o mais curta possível, mas é bem complicado.

    
por kwiksand 20.03.2013 / 13:00

1 resposta

1

IUS repo tem um

yum-plugin-replace

Eu estou atualizado com sucesso php 5.3.3 para 5.3.2x usando-o. Comando como um

yum replace php --replace-with php53u

Estou falando do link

    
por 20.03.2013 / 14:28