RHEL6.8にアップグレード時にphp-mbstring依存エラーがでる時の対処


1.はじめに

オンプレ環境で、RHEL6.7のサーバを6.8にアップグレードしました。
isoイメージを使ってアップグレードしたのですが、依存関係の問題でアップグレードが失敗しました。

〇注意点

今回のオンプレ環境は富士通製サーバです。RHELの更新はサポート提供のツールを利用している為、isoのメディアを使用した更新手順となっています。
(その他の更新選択肢がない)

2.アップデート失敗した

アップデート時に依存関係の確認でphp-commonにエラーが出て更新ができないようです。
どうやらphp-mbstring-5.3.3-47のrpmがメディアに収容されていないようでした。

Error: Package: php-mbstring-5.3.3-40.el6_6.x86_64 (installed)
           Requires: php-common(x86-64) = 5.3.3-40.el6_6
           Removing: php-common-5.3.3-40.el6_6.x86_64 (installed)
               php-common(x86-64) = 5.3.3-40.el6_6
           Updated By: php-common-5.3.3-47.el6.x86_64 (updates-server)
               php-common(x86-64) = 5.3.3-47.el6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

※5.3.3-47にアップデートしたいが、php-mbstring-5.3.3-47がインストールできない為インストール失敗している。

3.原因の調査

yumでphp-mbstringのrpmバージョンを調べてみたら、5.3.3-40までした存在しませんでした。

# yum list php-mbstring
読み込んだプラグイン:product-id, refresh-packagekit, security, subscription-manager
インストール済みパッケージ
php-mbstring.x86_64

どうやらphp-mbstringは、rhel-6-server-optional-rpmsというオプションリポジトリの管理
になっているとの事。
参照するリポジトリを追加する必要がありました。

4.対応方法

その1

RHNからダウンロードする。

rpmを検索すると出てくるので、対象バージョンとOSに該当するものをdownloadする。

その2

yumを使ってインストールする
redhat.repoを編集してrhel-6-server-optional-rpmsリポジトリを有効(enabled = 1)にする

vi /etc/yum.repos.d/redhat.repo
[rhel-6-server-optional-rpms]
metadata_expire = 86400
sslclientcert = /etc/pki/entitlement/288980885924363250.pem
baseurl = https://cdn.redhat.com/content/dist/rhel/server/6/$releasever/$basearch/optional/os
ui_repoid_vars = releasever basearch
sslverify = 1
name = Red Hat Enterprise Linux 6 Server - Optional (RPMs)
sslclientkey = /etc/pki/entitlement/288980885924363250-key.pem
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
gpgcheck = 1

入手可能なphp-mbstringのバージョンを確認してみる

# yum --showduplicate list php-mbstring
読み込んだプラグイン:product-id, refresh-packagekit, security, subscription-manager
インストール済みパッケージ
php-mbstring.x86_64                                                       5.3.3-40.el6_6                                                         installed
利用可能なパッケージ
php-mbstring.x86_64                                                       5.3.2-6.el6                                                            rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.2-6.el6_0.1                                                        rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-3.el6                                                            rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-3.el6_1.3                                                        rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-3.el6_2.5                                                        rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-3.el6_2.6                                                        rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-3.el6_2.8                                                        rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-14.el6_3                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-22.el6                                                           rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-23.el6_4                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-26.el6                                                           rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-27.el6_5                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-27.el6_5.1                                                       rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-27.el6_5.2                                                       rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-38.el6                                                           rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-40.el6_6                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-46.el6_6                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-46.el6_7.1                                                       rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-47.el6                                                           rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-48.el6_8                                                         rhel-6-server-optional-rpms
php-mbstring.x86_64                                                       5.3.3-49.el6                                                           rhel-6-server-optional-rpms

期待通り、5.3.3-47.el6の入手も可能となりました。

5.OSアップグレード前の事前作業

サーバがインターネット接続可能な環境で、yumが使えるのであれば、

# yum install php php-common

を行って、phpだけ先にアップグレードしておく。
その後にOSアップグレードを実施する。

インターネット環境が無い場合は、phpのrpmファイルをダウンロードしておき、転送する。
rpmコマンドでインストールした後にOSアップグレードを実施する。

# rpm -Uvh php*rpm

今回は、閉域の環境でしたのでダウンロードしたrpmファイルを転送してインストールしました。

6.最後に

RHEL6.6→6.7の時はphpの更新が無かった為、気付きませんでした。
データセンタでの作業の場合、後日仕切り直しとなるので辛い記憶が残りました。

作業が終わったら、enabled = 0 に戻すのを忘れずに!

  • 参考にしたサイト

Red Hat 6にphp-mbstringをインストール