tabimoba.net

とあるエンジニアの雑記帳

RHEL7でyum update 時にPHP5.4がアップデート出来ない場合の対応

RedHat Enterprise Linux 7(RHEL7)で、yum updateしようとした際に次のようなメッセージが表示され、php5.4のアップデートに失敗する場合があります。

# yum update
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-cli.x86_64 0:5.4.16-46.el7 を 更新
--> 依存性の処理をしています: php-cli(x86-64) = 5.4.16-46.el7 のパッケージ: php-devel-5.4.16-46.el7.x86_64
---> パッケージ php-cli.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-common.x86_64 0:5.4.16-46.el7 を 更新
--> 依存性の処理をしています: php-common(x86-64) = 5.4.16-46.el7 のパッケージ: php-mbstring-5.4.16-46.el7.x86_64
---> パッケージ php-common.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-gd.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-gd.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-mysql.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-mysql.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-pdo.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-pdo.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-process.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-process.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-xml.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-xml.x86_64 0:5.4.16-46.1.el7_7 を アップデート
---> パッケージ php-xmlrpc.x86_64 0:5.4.16-46.el7 を 更新
---> パッケージ php-xmlrpc.x86_64 0:5.4.16-46.1.el7_7 を アップデート
--> 依存性解決を終了しました。
エラー: パッケージ: php-devel-5.4.16-46.el7.x86_64 (@rhel-7-server-optional-rpms)
             要求: php-cli(x86-64) = 5.4.16-46.el7
            削除中: php-cli-5.4.16-46.el7.x86_64 (@rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-46.el7
            次のものにより更新された: : php-cli-5.4.16-46.1.el7_7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-46.1.el7_7
            利用可能: php-cli-5.4.16-21.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-21.el7
            利用可能: php-cli-5.4.16-23.el7_0.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0
            利用可能: php-cli-5.4.16-23.el7_0.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0.1
            利用可能: php-cli-5.4.16-23.el7_0.3.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0.3
            利用可能: php-cli-5.4.16-36.el7_1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.el7_1
            利用可能: php-cli-5.4.16-36.1.el7_2.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.1.el7_2.1
            利用可能: php-cli-5.4.16-36.3.el7_2.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.3.el7_2
            利用可能: php-cli-5.4.16-42.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-42.el7
            利用可能: php-cli-5.4.16-43.el7_4.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-43.el7_4
            利用可能: php-cli-5.4.16-43.el7_4.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-43.el7_4.1
            利用可能: php-cli-5.4.16-45.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-45.el7
エラー: パッケージ: php-mbstring-5.4.16-46.el7.x86_64 (@rhel-7-server-optional-rpms)
             要求: php-common(x86-64) = 5.4.16-46.el7
            削除中: php-common-5.4.16-46.el7.x86_64 (@rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-46.el7
            次のものにより更新された: : php-common-5.4.16-46.1.el7_7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-46.1.el7_7
            利用可能: php-common-5.4.16-21.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-21.el7
            利用可能: php-common-5.4.16-23.el7_0.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0
            利用可能: php-common-5.4.16-23.el7_0.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0.1
            利用可能: php-common-5.4.16-23.el7_0.3.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0.3
            利用可能: php-common-5.4.16-36.el7_1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.el7_1
            利用可能: php-common-5.4.16-36.1.el7_2.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.1.el7_2.1
            利用可能: php-common-5.4.16-36.3.el7_2.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.3.el7_2
            利用可能: php-common-5.4.16-42.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-42.el7
            利用可能: php-common-5.4.16-43.el7_4.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-43.el7_4
            利用可能: php-common-5.4.16-43.el7_4.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-43.el7_4.1
            利用可能: php-common-5.4.16-45.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-45.el7
**********************************************************************
yum can be configured to try to resolve such errors by temporarily enabling
disabled repos and searching for missing dependencies.
To enable this functionality please set 'notify_only=0' in /etc/yum/pluginconf.d/search-disabled-repos.conf
**********************************************************************

--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:3.10.0-693.5.2.el7 を 削除
---> パッケージ kernel-devel.x86_64 0:3.10.0-693.5.2.el7 を 削除
---> パッケージ php-cli.x86_64 0:5.4.16-46.el7 を 更新
--> 依存性の処理をしています: php-cli(x86-64) = 5.4.16-46.el7 のパッケージ: php-devel-5.4.16-46.el7.x86_64
---> パッケージ php-common.x86_64 0:5.4.16-46.el7 を 更新
--> 依存性の処理をしています: php-common(x86-64) = 5.4.16-46.el7 のパッケージ: php-mbstring-5.4.16-46.el7.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: php-devel-5.4.16-46.el7.x86_64 (@rhel-7-server-optional-rpms)
             要求: php-cli(x86-64) = 5.4.16-46.el7
            削除中: php-cli-5.4.16-46.el7.x86_64 (@rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-46.el7
            次のものにより更新された: : php-cli-5.4.16-46.1.el7_7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-46.1.el7_7
            利用可能: php-cli-5.4.16-21.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-21.el7
            利用可能: php-cli-5.4.16-23.el7_0.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0
            利用可能: php-cli-5.4.16-23.el7_0.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0.1
            利用可能: php-cli-5.4.16-23.el7_0.3.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-23.el7_0.3
            利用可能: php-cli-5.4.16-36.el7_1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.el7_1
            利用可能: php-cli-5.4.16-36.1.el7_2.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.1.el7_2.1
            利用可能: php-cli-5.4.16-36.3.el7_2.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-36.3.el7_2
            利用可能: php-cli-5.4.16-42.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-42.el7
            利用可能: php-cli-5.4.16-43.el7_4.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-43.el7_4
            利用可能: php-cli-5.4.16-43.el7_4.1.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-43.el7_4.1
            利用可能: php-cli-5.4.16-45.el7.x86_64 (rhel-7-server-rpms)
                php-cli(x86-64) = 5.4.16-45.el7
エラー: パッケージ: php-mbstring-5.4.16-46.el7.x86_64 (@rhel-7-server-optional-rpms)
             要求: php-common(x86-64) = 5.4.16-46.el7
            削除中: php-common-5.4.16-46.el7.x86_64 (@rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-46.el7
            次のものにより更新された: : php-common-5.4.16-46.1.el7_7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-46.1.el7_7
            利用可能: php-common-5.4.16-21.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-21.el7
            利用可能: php-common-5.4.16-23.el7_0.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0
            利用可能: php-common-5.4.16-23.el7_0.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0.1
            利用可能: php-common-5.4.16-23.el7_0.3.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-23.el7_0.3
            利用可能: php-common-5.4.16-36.el7_1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.el7_1
            利用可能: php-common-5.4.16-36.1.el7_2.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.1.el7_2.1
            利用可能: php-common-5.4.16-36.3.el7_2.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-36.3.el7_2
            利用可能: php-common-5.4.16-42.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-42.el7
            利用可能: php-common-5.4.16-43.el7_4.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-43.el7_4
            利用可能: php-common-5.4.16-43.el7_4.1.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-43.el7_4.1
            利用可能: php-common-5.4.16-45.el7.x86_64 (rhel-7-server-rpms)
                php-common(x86-64) = 5.4.16-45.el7
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

原因

rhel-7-server-optional-rpms リポジトリ(チャンネル)がenableでないと、当該事象が発生します。 上記リポジトリがenableであるかどうかは、yum repolistコマンドで確認することができます。

以下のような状態である(rhel-7-server-optional-rpmsがenableである)場合は、当該事象は発生しません。 rhel-7-server-optional-rpmsが結果に表示されない場合は、当該事象が発生する可能性があります。

# yum repolist
読み込んだプラグイン:langpacks, product-id, search-disabled-repos, subscription-manager
リポジトリー ID                                                   リポジトリー名                                                              状態
rhel-7-server-optional-rpms/7Server/x86_64                        Red Hat Enterprise Linux 7 Server - Optional (RPMs)                         19,656
rhel-7-server-rpms/7Server/x86_64                                 Red Hat Enterprise Linux 7 Server (RPMs)                                    27,011

対応

以下のコマンドを実行し、rhel-7-server-optional-rpmsリポジトリを追加します。

subscription-manager repos --enable rhel-7-server-optional-rpms

注意点

optionalリポジトリは、RHELのサポート対象ではない(RedHatのグローバルサポートサービスを受けられない)ため、導入に際しては注意が必要です。 https://access.redhat.com/ja/solutions/4387631

Red Hat では、Red Hat/Red Hat JBoss 製品の機能に加えて、お客様の利便性を向上させるソフトウェアパッケージ (RPM) を追加で提供しています。これらのソフトウェアパッケージには、オープンソースライセンスのソフトウェア (「Optional」Red Hat Network チャンネル) および商用ライセンスのソフトウェア (「Supplementary」Red Hat Network チャンネル) があります。Optional および Supplementary チャンネルのソフトウェアパッケージはサポート対象ではなく、ABI の保証も適用されません。

RHELでoptionalリポジトリに属するPHPパッケージは次のとおりです。

  • php-bcmath
  • php-devel
  • php-embedded
  • php-enchant
  • php-dba
  • php-fpm
  • php-intl
  • php-mbstring
  • php-mysqlnd
  • php-pspell
  • php-snmp

参考