[yum] replaceの「Unable to resolve all providers」の意味と対応の巻

スポンサーリンク

先日yum replaceを使ってphpを5.5にするという記事を書きましたが、書きそびれていたことがありました。

phpを対象にyum replaceを行った場合、「Unable to resolve all providers」の警告が出ますが、これは無視して問題ありません

とりあえず、CentOS6の環境でIUSのレポジトリからインストール済みのphp54をphp55uにreplaceしようとした場合にどうなるかを見てみましょう。以下の方法では余計なごちゃごちゃを表示しないように「-q」オプションを使っていますが、yum replaceの動作に影響を与えるものではありませんのでその点ご留意ください。

# yum -q replace php54 --replace-with=php55u
Replacing packages takes time, please be patient...

WARNING: Unable to resolve all providers: ['php54-common', 'php54(language)', 'php54(language)(x86-64)', 'php54-api', 'php54-zend-abi', 'php54(api)', 'php54(zend-abi)',
 'php54-bz2', 'php54-calendar', 'php54-ctype', 'php54-curl', 'php54-date', 'php54-exif', 'php54-fileinfo', 'php54-pecl-Fileinfo', 'php54-pecl(Fileinfo)', 'php54-ftp', 'p
hp54-gettext', 'php54-gmp', 'php54-hash', 'php54-mhash', 'php54-iconv', 'php54-json', 'php54-pecl-json', 'php54-pecl(json)', 'php54-libxml', 'php54-openssl', 'php54-pecl
-phar', 'php54-pecl(phar)', 'php54-pcre', 'php54-reflection', 'php54-session', 'php54-shmop', 'php54-simplexml', 'php54-sockets', 'php54-spl', 'php54-tokenizer', 'php54-
filter', 'php54-filter(x86-64)', 'php-api', 'php-zend-abi', 'php-pecl-Fileinfo', 'php-pecl(Fileinfo)', 'php-json', 'php-pecl-json', 'php-pecl(json)', 'php-pecl-phar', 'p
hp-pecl(phar)', 'php54-zip', 'php54-pecl-zip', 'php-pecl-zip', 'php54-pecl(zip)', 'php-pecl(zip)', 'php54-zlib', 'php54-common', 'php54-common(x86-64)', 'php54-cgi', 'ph
p54-pcntl', 'php54-readline', 'php-cli', 'php54-cli', 'php54-cli(x86-64)', 'php54-zts', 'mod_php54', 'php54', 'libphp5.so()(64bit)', 'php54', 'php54(x86-64)', 'php54-pdo
', 'php54-pdo-abi', 'php54-sqlite3', 'php54-pdo_sqlite', 'php54-pdo', 'php54-pdo(x86-64)', 'php54-mysql', 'php54_database', 'php54-mysqli', 'php54-pdo_mysql', 'php54-mys
ql', 'php54-mysql(x86-64)', 'php54-mbstring', 'php54-mbstring', 'php54-mbstring(x86-64)', 'php54-mcrypt', 'php54-mcrypt', 'php54-mcrypt(x86-64)', 'php54-xml', 'php-xml',
 'php54-dom', 'php54-xsl', 'php54-domxml', 'php54-wddx', 'php54-xmlreader', 'php54-xmlreader(x86-64)', 'php54-xmlwriter', 'php54-xmlwriter(x86-64)', 'php54-xml', 'php54-
xml(x86-64)', 'php54-gd', 'php54-gd', 'php54-gd(x86-64)']

This may be normal depending on the package.  Continue? [y/N] y

========================================================================================================================================================================
 Package                                     Arch                               Version                                         Repository                         Size
========================================================================================================================================================================
Installing:
 php55u                                      x86_64                             5.5.7-1.ius.el6                                 ius                               2.6 M
 php55u-cli                                  x86_64                             5.5.7-1.ius.el6                                 ius                               2.5 M
 php55u-common                               x86_64                             5.5.7-1.ius.el6                                 ius                               1.1 M
 php55u-gd                                   x86_64                             5.5.7-1.ius.el6                                 ius                               173 k
 php55u-gmp                                  x86_64                             5.5.7-1.ius.el6                                 ius                                52 k
 php55u-mbstring                             x86_64                             5.5.7-1.ius.el6                                 ius                               967 k
 php55u-mcrypt                               x86_64                             5.5.7-1.ius.el6                                 ius                                49 k
 php55u-mysqlnd                              x86_64                             5.5.7-1.ius.el6                                 ius                               271 k
 php55u-pdo                                  x86_64                             5.5.7-1.ius.el6                                 ius                               119 k
 php55u-pear                                 noarch                             1:1.9.4-20.ius.el6                              ius                               370 k
 php55u-process                              x86_64                             5.5.7-1.ius.el6                                 ius                                64 k
 php55u-xml                                  x86_64                             5.5.7-1.ius.el6                                 ius                               215 k
Removing:
 php54                                       x86_64                             5.4.22-1.ius.el6                                @ius                              9.1 M
 php54-cli                                   x86_64                             5.4.22-1.ius.el6                                @ius                              7.7 M
 php54-common                                x86_64                             5.4.22-1.ius.el6                                @ius                              6.9 M
 php54-gd                                    x86_64                             5.4.22-1.ius.el6                                @ius                              663 k
 php54-mbstring                              x86_64                             5.4.22-1.ius.el6                                @ius                              2.5 M
 php54-mcrypt                                x86_64                             5.4.22-1.ius.el6                                @ius                               86 k
 php54-mysql                                 x86_64                             5.4.22-1.ius.el6                                @ius                              452 k
 php54-pdo                                   x86_64                             5.4.22-1.ius.el6                                @ius                              348 k
 php54-pear                                  noarch                             1:1.9.4-2.ius.el6                               @ius                              2.2 M
 php54-xml                                   x86_64                             5.4.22-1.ius.el6                                @ius                              622 k
Installing for dependencies:
 libvpx                                      x86_64                             0.9.0-8.el6_0                                   base                              161 k
Removing for dependencies:
 roundcubemail                               noarch                             0.9.5-1.el6                                     @epel                              12 M
 websvn                                      noarch                             2.3.3-2.el6                                     @epel                             787 k

Transaction Summary
========================================================================================================================================================================
Install      13 Package(s)
Remove       12 Package(s)

Is this ok [y/N]: N
Exiting on user Command

はい。

今回は試しでやっているので、「N」でキャンセルして終了しています。

WARNING: Unable to resolve all providers:

この警告に関して考慮します。

This may be normal depending on the package.

とあるとおり、「これは対象のパッケージによっては通常の動作です」。続けますか?と聞かれるので、自信をもって「y」としましょう。この警告に関してはこちら(英語)のページに以下の記述があります。

As you can see there is a WARNING that the ‘replace’ operation was unable to resolve all providers. This means that the ‘php53’ package doesn’t provide everything that the ‘php’ packages did. This is normal, and should be expected when upgrading major versions of software.

The yum-plugin-replace is new, and therefore small issues like this will be resolved in the near future as they are discovered.

上記内容を私なりに解釈すると以下の通りになります。

みてわかるとおり”replace”の利用結果として全てのパッケージの提供元を見つけることができないという警告が出ます。これは、”php53″パッケージが”php”パッケージが提供するすべてのパッケージを網羅していないという事を意味しています。これは通常動作で、ソフトウェア(この場合PHP)のメジャーバージョンをアップデートする時には起きると想定される警告です。

yum-plugin-replaceは新しい機能なので、このような小さな問題はありますが近い将来このような問題は解消されるでしょう。

なので、無視して自信と責任をもって「y」しちゃってください。

Installing: と Removing:

ここに列挙されるパッケージは「yum -q replace php54 –replace-with=php55u」によって、つまり、php54からphp55uへの変更においてインストールされるパッケージ、及び削除されるパッケージです。

なんと便利な機能なのでしょう。この機能に関してもこちら(英語)に記載があります。

You will notice that the ‘replace’ plugin determines all the required sub packages that are required to resolve the deps provided by the stock versions package set. Additionally, the plugin will attempt to install any external packages that might need to be replaced as well. For example, the ‘php-pear’ package is not part of the ‘php’ package set. Therefore, it needs to be replaced by ‘php53-pear’ … another example would be with any PECL sub packages that might be installed (assuming the php53-pecl-xxxxxx package is available in IUS).

“replace”が対象となるPHPが依存しているサブパッケージに関しても考慮していることがわかると思います。さらに、replaceプラグインは必要とされるほかのパッケージに関してもインストールを試みます。例えば、”php-pear”パッケージは”php”パッケージセットの一部ではありませんが、”php-pear”パッケージは”php53-pear”パッケージに入れ替えられます。またPECLサブパッケージに関しても”php53-pecl-xxxxx”パッケージがIUSレポジトリに存在する場合は同時にインストールされます。

なんということでしょう!(ビフォアアフ○ー的な驚きww)

わざわざ沢山のパッケージを指定しなくても、根っことなるパッケージをreplaceすればそれに関わるパッケージも入れ替えてくれるなんて、さいこうですね!

Removing for dependencies:

これが気を付けないといけない部分です。上記の例では以下のようになっています。

Removing for dependencies:
 roundcubemail                               noarch                             0.9.5-1.el6                                     @epel                              12 M
 websvn                                      noarch                             2.3.3-2.el6                                     @epel                             787 k

この場合、単純にreplaceすると、roundcubemailとwebsvnがアンインストールされます。

このような場合選択肢は2つ。

  1. とにかくreplaceして、そのあとに削除されたパッケージを再インストールする
  2. こちらの記事を参考に、replaceを使わない方法でphpのバージョンをあげる

どちらがいいかはご自身で判断してください。

以上です!

 

コメント

  1. くりくり より:

    さっそく書いたんですね!!
    調べてみるとapcはphp5.5に対応しないみたいことも書いてありました。
    私自身はapcとopcacheを検証していませんが、opcacheの方がapcより早いと書いてある所も
    確認方法は

    [redadmin@www ~]$ php -i |grep opcache

    opcache.enable => On => On

    大掃除して体が筋肉痛になりそ・・・。

  2. trippyboy より:

    早速かきましたよ~
    apcuってのがありますけど、こちらで代替が利くような気がします。

    (CentOS5.10のWebtaticレポジトリの場合)
    php55w-pecl-apcu.i386 : APCu – APC User Cache

    あれ?php -i | grep -i opcacheで
    Opcode Caching => Disabled
    Startup Failed => Opcode Caching is disabled for CLI
    となると思ったら、rootだからだったようです。 phpinfoファイルでの確認と一般ユーザーでの確認ができました(・v・)

    大掃除ご苦労様です!自分は今日で仕事納めですが大掃除はしれっと参加してませんwwww

タイトルとURLをコピーしました