web-dev-qa-db-ja.com

php53uからphp54への優雅なアップグレード

Iuscommunityリポジトリを使用してCentOS6ノードを実行しており、以前にインストールした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
5
sparanoid

Php53uを削除してみましたか?シンプルな:

yum remove php53u

に続く:

yum install php54

あなたのためにトリックをしているはずです。そうでない場合は、「rpm」ツールを使用してphp53uパッケージを削除し、依存関係をそのままにしておくことができますが、最初にインストールされているパッケージのリストを確認して、後で新しいphp54リポジトリから再インストールできるようにします。

rpm -qa | grep ^php53u.* > /root/php-packages.log

作成したリストのコピーを保管してください。私のサーバーの1つでは、このリストは次のようになります。

$ 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

これがお役に立てば幸いです:-)

5
Michael Crilly

これを行う別の方法は、yumプラグインを使用することですyum-plugin-replacehttp://iuscommunity.org/pages/IUSClientUsageGuide.html で説明されているように)。

yum install yum-plugin-replace

その後、次の方法で交換できます。

yum replace php53u --replace-with php54

これは、必要に応じてインストールされているすべての依存関係の代替を見つけようとするため、iusが推奨する方法です。

4
faker