Php

從 php53u 優雅升級到 php54

  • December 9, 2013

我們正在使用 iuscommunity repo 執行 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' )

完畢。

這是整個事情的一個襯裡:

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

我希望這有幫助 :-)

引用自:https://serverfault.com/questions/416689