saz*_*azr 5 php centos php-5.6 centos7
我试图在CentOS 6的PHP 5.3.3上安装Soap模块(来自webtatic PHP 5.6)。当我运行yum命令yum install php56w-soap
进行安装时,我得到以下消息:
错误:用php-共5.3.3-49.el6.x86_64 php56w常见冲突,
你可以尝试使用--skip-破要解决这个问题
,您可以尝试运行:RPM -Va --nofiles --nodigest
我有什么解决方案?我应该只运行--skip-broken
,还有其他选择吗?
我在VPS上运行php 5.6.3和CentOS 6
您正在使用第三方存储库,因此请理解您正在寻求一些痛苦。
webtatic 存储库比某些存储库更好,但它并不完美:一方面,这些软件包没有正确包含我们在这种特殊情况下真正需要的过时的、依赖的和冲突列表。
比较逻辑(通常对我们有帮助)是因为 PHP 是 PHP 的唯一替代品这一知识而绊倒;不是“php56w”。因此,它不会自动丢弃现在存在的 php533 堆栈,只是为了满足依赖关系。你必须给它一个适当的提示。
在安装替代堆栈之前拉出 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
做同样的事情,但尝试只删除php-common
并希望它能拖掉其他所有东西。应该可以,而且比上面的选项更容易,但有时并不是 100% 完美。
yum erase php-common
进而
yum install php56w-soap
特别是如果您有无法删除的依赖项,这些依赖项依赖于 php (并且足够聪明,可以与 php56w 一起使用),请使用IUSyum 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”。
您的最后一个选择,也是需要考虑的一个重要选择,是决定您是否准备好并愿意接受第三方存储库,以及它们有时存在的依赖性问题和不稳定的更新例程。甚至 EPEL 或 SCL 都会错过更新(咳咳。php7.1.18 还没有更新吗?),而且我不认为更多的业余爱好者会更好。我实际上预计情况会更糟。因此,如果您可以忍受最少的测试、没有支持和太多帮助,那么就继续前进吧。
否则,决定你是否可以接受 Centos 6 附带的无聊、普通、受支持、安全、(更)安全的 php 5.3.3。RHEL/Centos 上认证的所有内容都可以使用它,你不会发现自己需要花费更多时间您安装的每一个附加部件都会产生依赖性,如果您可以使用长期发行版支持的产品版本,而不是上周挤出来的一些闪亮的礼物,并且几乎没有经过测试,那么您将能够在晚上睡得更好。
但 25 年来我变得有偏见了:-)