解决php-common冲突的最佳方法:忽略,修复,其他?

时间:2017-08-08 05:16:41

标签: php centos centos7 php-5.6

我正在尝试在CentOS 6上的PHP 5.3.3上安装Soap模块(来自webtatic PHP 5.6)。当我运行yum命令yum install php56w-soap进行安装时,我收到以下消息:

  

错误:php56w-与php-common-5.3.3-49.el6.x86_64的常见冲突   您可以尝试使用--skip-broken来解决问题   您可以尝试运行:rpm -Va --nofiles --nodigest

我有什么选择来解决这个问题?我应该只使用--skip-broken,还有其他选择吗?

我在VPS上运行php 5.6.3和CentOS 6

1 个答案:

答案 0 :(得分:0)

您正在使用第三方存储库,因此请理解您要求一些痛苦。

webtatic repo比某些更好,但它并不完美:首先,这些软件包没有正确包含我们在这种特殊情况下真正需要的过时,依赖和冲突列表。

比较逻辑 - 通常对我们有帮助 - 正在绊倒PHP是PHP唯一的替代品;不是'php56w'。因此,它不会自动抛出现在已经存在的php533堆栈,只是为了满足依赖性。你必须给它一个适当的提示。

  1. 在安装备用堆栈之前拔出php:找到从5.3.3包安装的所有内容,将其减少为名称,并将其传递给yum调用:

    rpm -qa --qf "%{name}-%{version}\n" \ | grep 5.3.3 \ | sed 's/-5.3.3$//' \ | xargs yum erase

    然后 yum install php56w-soap

  2. 做同样的事情,但尝试删除php-common并希望它会将其他所有内容拖出来。应该,它比上面的选项更容易,但它有时不是100%完美。

    yum erase php-common 然后 yum install php56w-soap

  3. 特别是如果你有依赖关系你将不会/不能删除,这取决于php(并且足够聪明,可以与php56w一起使用)使用IUS中的yum replace plugin。向前迈出一步又向后退了几步,但我们同意你现在已经知道了一分钱。

    所以,安装 yum install \ https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm \ https://centos6.iuscommunity.org/ius-release.rpm yum install yum-plugin-replace

    然后拉开关: yum replace php --replace-with php56w

    它有时会抱怨缺少依赖关系,而这就是你需要闭上眼睛然后点击'y'或决定是否可以忍受丢失的部分,并承诺一旦完成就可以解决问题。依赖地狱总是自己造成的。

    该命令将为您提供一个巨大且可怕的解决方案列表,因此请查看该列表。它应该是有道理的。当你准备好安装软件时,就像在任何其他yum调用中一样说'y'。

  4. 您的最后一个选择,这是一个需要考虑的重要选择,是决定您是否已准备好并愿意与第三方回购一起生活,以及依赖问题和他们有时拥有的片状更新例程。甚至EPEL或SCL也没有错过更新(ahem.php7.1.18任何时候?),我不希望更多的业余爱好者更好。我实际上期待更糟糕。所以,如果你可以接受最低限度的测试,没有支持而没有太大的帮助,那么请提前收费。

    否则,决定是否可以使用Centos 6附带的无聊,库存,支持,安全,(更多)安全的php 5.3.3。在RHEL / Centos上认证的所有内容都可以使用它,你将找不到你自己用你安装的每一件额外的部分拆分更多的依赖性头发,如果你能够使用长期发行版支持的产品版本而不是上周挤出的一些闪亮的礼物,你将能够在晚上睡得更好测试

  5. 但是我在25年后变得有偏见:-)