从php53u到php54的优雅升级

我们正在运行一个使用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所&#x8FF0; )。

     yum install yum-plugin-replace 

    之后,您可以通过以下方式replace它:

     yum replace php53u --replace-with php54 

    这是ius推荐的方式,因为它也将尝试根据需要find所有安装的依赖关系的replace。