Php
從 php53u 優雅升級到 php54
我們正在使用 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
我希望這有幫助 :-)