CentOS7にApache2.4とPHP5.6をインストールしようとしたらhttpd-mmnの違いでエラーが出る

  • 更新日:
  • 公開日:

CentOS7にApache2.4とPHP5.6を入れようとしたら物凄く躓きました。httpd-mmnの違いで、インストール時の依存性解決時にエラーが起きました。

エラー内容

# sudo yum install --enablerepo=remi,remi-php56 httpd php

...

エラー: パッケージ: php-5.6.4-2.el6.remi.x86_64 (remi-php56)
             要求: httpd-mmn = 20051115
            利用可能: httpd-2.4.6-17.el7.centos.1.x86_64 (base)
                httpd-mmn = 20120211x8664
                httpd-mmn = 20120211-x86-64
                httpd-mmn = 20120211
            インストール中: httpd-2.4.6-18.el7.centos.x86_64 (updates)
                httpd-mmn = 20120211x8664
                httpd-mmn = 20120211-x86-64
                httpd-mmn = 20120211

httpd-mmnとはapacheのソースコードに定義されている、互換性に関する定数のようです。「Apacheのhttpd-mmnは『20120211』なのに、PHP5.6が要求しているhttpd-mmnは『20051115』だからインストールできませんわ」と言っているんですね。

結論から言いますと、remiリポジトリのバージョンが古いことが原因でした。実際にremiリポジトリの内容を見てみると、

# cat /etc/yum.repos.d/remi.repo
[remi]
name=Les RPM de remi pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55]
name=Les RPM de remi de PHP 5.5 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php55/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56]
name=Les RPM de remi de PHP 5.6 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php56/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

...

となっています。「Enterprise Linux 6」となっていたり、リポジトリのURLに「6」と入っていると古いようです(2015年1月現在新しいのは7です)。なので、一旦この古いリポジトリを削除して新しくします。

remiリポジトリを新しくする

削除するため古いリポジトリ名を探します。

# rpm -qa | grep remi
remi-release-6.5-1.el6.remi.noarch

「remi-release-6.5-1.el6.remi.noarch」ですね。

remiリポジトリを削除する前に、依存性のあるパッケージがあるか確認しておきます。

# rpm -e --test remi-release-6.5-1.el6.remi.noarch

自分の場合は無かったので、そのまま削除します。

# rpm -e remi-release-6.5-1.el6.remi.noarch

次に、新しいremiリポジトリを入れます。以下はユーザディレクトリ(cd ~)にリポジトリをダウンロードしています。

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7.rpm

これでremiリポジトリが新しくなりました。早速インストールしてみます。

# sudo yum install --enablerepo=remi,remi-php56 httpd php

...

エラー: パッケージ: php-5.6.4-2.el6.remi.x86_64 (remi-php56)
             要求: httpd-mmn = 20051115
            利用可能: httpd-2.4.6-17.el7.centos.1.x86_64 (base)
                httpd-mmn = 20120211x8664
                httpd-mmn = 20120211-x86-64
                httpd-mmn = 20120211
            インストール中: httpd-2.4.6-18.el7.centos.x86_64 (updates)
                httpd-mmn = 20120211x8664
                httpd-mmn = 20120211-x86-64
                httpd-mmn = 20120211

が、自分の場合ここに来てまた冒頭と同じエラーが起きてしまいました。

リポジトリのキャッシュが原因

リポジトリを新しくしたのにもかかわらずphpのダウンロードバージョンに「el6」と書かれています。どうやらキャッシュが原因でリポジトリのURLが変更されていないようです。キャッシュを削除してみます。

# yum clean all

しかし、これでもダメでした。

yum cleanでも完璧には削除されない?

もうここまで来たらコマンドに頼らず、直接yumのキャッシュディレクトリを削除することにしました。キャッシュディレクトリは/etc/yum.confに設定されています。

# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever

 $basearch$releaseverはそれぞれシステムのアーキテクチャ、Red Hat Enterprise Linuxのバージョンを参照するようですが、ディレクトリはtabを押していけば自動的に入力されるので深く考えなくて大丈夫でしょう。自分は以下のキャッシュディレクトリを削除しました。

# rm -rf /var/cache/yum/x86_64/7/remi
# rm -rf /var/cache/yum/x86_64/7/remi-php55
# rm -rf /var/cache/yum/x86_64/7/remi-php56

はい。これでようやくリポジトリのURLが新しくなって、Apache2.4とPHP5.6のインストールができました。

# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Jul 23 2014 14:48:00

# php -v
PHP 5.6.4 (cli) (built: Dec 17 2014 16:37:35)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

# httpd -M | grep php
 php5_module (shared)

以上です。

参考:

PHPの環境設定に関する問題CentOS 7.0.1406 上のPHP5.4及び5.5で以下の… – Yahoo!知恵袋

CentOS7 64bitのyumリポジトリにRemiを追加 | kakiro-web カキローウェブ

6.3. Yum と Yum リポジトリの設定

rpm e httpd したときに依存しているモジュールがありエラーとなる件: もんきち

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone