Мы запускаем узел CentOS 6 с использованием репозитория iuscommunity и хотим обновить ранее установленный 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
Должно быть сделано за вас. Если это не так, вы можете попробовать удалить пакеты php53u с помощью инструмента rpm, оставив зависимости нетронутыми, но сначала проверьте список установленных пакетов, чтобы вы могли позже переустановить их из нового репозитория 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).
Как только вы это сделаете, просто установите пакет (ы) php54 через yum:
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
Надеюсь, это поможет :-)
Другой способ сделать это - использовать плагин yum. yum-plugin-replace
(как описано на http://iuscommunity.org/pages/IUSClientUsageGuide.html).
yum install yum-plugin-replace
После этого вы можете заменить его через:
yum replace php53u --replace-with php54
Этот способ рекомендуется ius, поскольку он также попытается найти замену для всех установленных зависимостей, если это необходимо.