我们正在运行一个使用iuscommunity回购的CentOS 6节点,并且想将以前安装的php53u升级到php54。
但是,这引起了php53u&php54之间的依赖冲突。 有没有人有这个问题的想法?
--> Running transaction check ---> Package php54-fpm.i686 0:5.4.5-1.ius.el6 will be installed --> Processing Dependency: php-common = 5.4.5-1.ius.el6 for package: php54-fpm-5.4.5-1.ius.el6.i686 ---> Package php54-gd.i686 0:5.4.5-1.ius.el6 will be installed ---> Package php54-mbstring.i686 0:5.4.5-1.ius.el6 will be installed ---> Package php54-pecl-apc.i686 0:3.1.11-2.ius.el6 will be installed --> Processing Dependency: php54 >= 5.3.5-1 for package: php54-pecl-apc-3.1.11-2.ius.el6.i686 --> Running transaction check ---> Package php54.i686 0:5.4.5-1.ius.el6 will be installed --> Processing Dependency: php54-cli = 5.4.5-1.ius.el6 for package: php54-5.4.5-1.ius.el6.i686 ---> Package php54-common.i686 0:5.4.5-1.ius.el6 will be installed --> Running transaction check ---> Package php54-cli.i686 0:5.4.5-1.ius.el6 will be installed --> Processing Conflict: php54-5.4.5-1.ius.el6.i686 conflicts php53u --> Processing Conflict: php54-5.4.5-1.ius.el6.i686 conflicts php < 5.4 --> Finished Dependency Resolution Error: php54 conflicts with php53u You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
你有没有尝试删除php53u? 一个简单的:
yum remove php53u
其次是:
yum install php54
应该为你做的伎俩。 如果没有,那么你可以尝试使用'rpm'工具去除php53u包,保持依赖完整,但首先检查安装包的列表,以便稍后可以从新的php54库重新安装它们:
rpm -qa | grep ^php53u.* > /root/php-packages.log
保留产生的清单的副本。 在我的一台服务器上,这个列表看起来像:
$ rpm -qa | grep ^php54* php54-common-5.4.4-1.ius.el6.x86_64 php54-pdo-5.4.4-1.ius.el6.x86_64 php54-mysql-5.4.4-1.ius.el6.x86_64 php54-fpm-5.4.4-1.ius.el6.x86_64 php54-gd-5.4.4-1.ius.el6.x86_64 php54-cli-5.4.4-1.ius.el6.x86_64 php54-5.4.4-1.ius.el6.x86_64 php54-mbstring-5.4.4-1.ius.el6.x86_64
然后,我可以删除这些,而不删除依赖项,如下所示:
for p in $( cat /root/php-packages.log ); do rpm -e --nodeps $p; done
(请注意,我在这里使用'php54',您将需要使用'php53u')。
完成之后,只需通过yum安装php54软件包:
yum install php54
或者你可以自动完成一切的重新安装:
yum install $( cat /root/php-packages.log | sed 's/php53u/php54/g' )
完成。
这是整个事情的一个class轮:
rpm -qa | grep ^php53u.* > /root/php-packages.log; for p in $( cat /root/php-packages.log ); do rpm -e --nodeps $p; done; yum install $( cat /root/php-packages.log | sed 's/php53u/php54' ) -y
我希望这有帮助 :-)
另一种方法是使用yum插件yum-plugin-replace (如http://iuscommunity.org/pages/IUSClientUsageGuide.html所述 )。
yum install yum-plugin-replace
之后,您可以通过以下方式replace它:
yum replace php53u --replace-with php54
这是ius推荐的方式,因为它也将尝试根据需要find所有安装的依赖关系的replace。