RPM软件包与基于主要版本的软件的依赖关系(即PHP 5.3与它的插件,然后PHP 5.4)

场景:

PHP5.3

  • php-5.3.21-1_x86_64.rpm (base)
  • php-pecl-memcache-3.0.6-1_x86_64.rpm (依赖于上面的内部PHP ABI版本的变化)

PHP5.4

  • php-5.4.13-1_x86_64.rpm (base)
  • php-pecl-memcache-3.0.7-1_x86_64.rpm (依赖于上面的内部PHP ABI版本的变化)

这是关于RPM和版本控制的一个更普遍的问题,但是我现在将它专门与PHP联系起来,因为这正是我所看到的。 它也可能涉及任何需要特定的API / ABI版本的软件(同样适用于Apache / httpd,Python等)的任何库/包。

问题

我目前正在升级到PHP 5.4,并寻找一种方法来使用yum / rpm来允许一些服务器运行传统的PHP 5.3,我想知道实现这个最好的方法。 上面的问题是(如果包都在一个yum版本库中),PHP5.3服务器(版本locking到5.3)看到有一个“升级”php-pecl-memcache(3.0.6 <3.0.7 )并尝试更新,但打包的依赖错误包php-pecl-memcache-3.0.7要求与5.4包发布的PHP ABI版本。

基本上我正在努力解决的是:

  • 有没有办法让yum说,' 如果我安装了php 5.3软件包,然后忽略依赖于新版本升级 '?
  • 其次,这是使用我还没有想到的版本pipe理系统,或RPM / RPMBuild中的Epoch关键字来完成的吗?
  • 我已经看到了另一种创buildphp54-common-5.4.11的方法,httpd24-devel-2.4.2-,python27等(虽然以前的版本scheme没有指定主版本作为名字的一部分)
  • 最后,也许这样做的唯一方法是将软件包分成不同的软件仓库,这就给软件包/版本/版本命名带来了另外一个有趣的问题,以便从文件名中知道它的主要版本/ API版本/时期。 (PHP-PECL-内存caching-3.0.7_php54_x86_65.rpm)

当我想到这件事时,让我感到困惑的是,我现在只关心小批量的软件包。 在升级影响数千个库的主要版本时,RHEL / Fedora软件包维护者如何处理这个问题(python从2.6升级到2.7,或者perl / ruby​​等)

谢谢大家,我尽量保持这个问题尽可能短,但这是相当复杂的。

IUS回购有一个

百胜插件replace

我成功地升级到5.3.3使用它的PHP 5.3.3。 像一个命令

yum replace php --replace-with php53u 

我在谈论http://iuscommunity.org/