(2021/07/05 更新)
webtatic リポジトリは、2019/10/26 を最後に更新が止まっています。
いい感じのリポジトリだったのですが、今となっては残念ながら、あまりお勧めできません。
このため、この記事もそろそろ賞味期限切れということになります。
これから PHP をインストールする方は、Remi's RPM repository をお勧めします。
はじめに
久しぶりに php の環境を作る機会ができたので、CentOS 7.x と php-7.x の組み合わせにおけるリポジトリの現状を調べてみました。
ベースとなる OS は、Vagrant box から yum update したものです。調査準備までの手順(抜粋)を以下に示します。
d:\> mkdir laravel
d:\> cd laravel
d:\laravel> vagrant init bento/centos-7.1
d:\laravel> vagrant up
d:\laravel> vagrant ssh
[vagrant@localhost]:~$ cat /etc/system-release
CentOS Linux release 7.1.1503 (Core)
[vagrant@localhost]:~$ sudo yum update
d:\laravel> vagrant reload
d:\laravel> vagrant snapshot take 'just_after_yum_update'
d:\laravel> vagrant ssh
[vagrant@localhost]:~$ cat /etc/system-release
CentOS Linux release 7.2.1511 (Core)
Vagrant+VirtualBox は Windows10 上で動かしています。ディレクトリ名には特に意味はありません。
デフォルトの状態
素の CentOS7.2 では、yum リポジトリは以下のようになっています。
[vagrant@localhost ~]$ ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
デフォルトでは php はインストールされていません。
[vagrant@localhost ~]$ rpm -qa|grep php
この状態で php を入れようとすると、5.4 系が落ちてきます。
[vagrant@localhost ~]$ sudo yum install php
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php x86_64 5.4.16-36.3.el7_2 updates 1.4 M
Installing for dependencies:
apr x86_64 1.4.8-3.el7 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k
httpd x86_64 2.4.6-40.el7.centos.4 updates 2.7 M
httpd-tools x86_64 2.4.6-40.el7.centos.4 updates 83 k
libzip x86_64 0.10.1-8.el7 base 48 k
mailcap noarch 2.1.41-2.el7 base 31 k
php-cli x86_64 5.4.16-36.3.el7_2 updates 2.7 M
php-common x86_64 5.4.16-36.3.el7_2 updates 563 k
Is this ok [y/d/N]:
( [Enter] で応答して、インストールを中止します)
5.4 以外のバージョンは提供されていないようです。
[vagrant@localhost ~]$ yum search php | grep ^php | grep -v ^php-
php.x86_64 : PHP scripting language for creating dynamic web sites
リポジトリの選択肢
CentOS 7.x で php-7.x を入れる場合、有名なリポジトリとしては remi と webtatic があります。いずれも epel(Extra Packages for Enterprise Linux) に依存しますので、あらかじめ epel を入れておきます。
[vagrant@localhost ~]$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
webtatic
まず、以前から個人的に使わせていただいていた webtatic から調べます。webtatic のインストールのやり方は https://webtatic.com/packages/php70/ にあります:
[vagrant@localhost ~]$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[vagrant@localhost ~]$ rpm -qa|grep -E '(epel|remi|webtatic)'
epel-release-7-8.noarch
webtatic-release-7-3.noarch
[vagrant@localhost ~]$ sudo yum update
[vagrant@localhost ~]$ yum search php|grep -E '^php[a-z0-9]*-devel'
php-devel.x86_64 : Files needed for building PHP extensions
php54w-devel.x86_64 : Files needed for building PHP extensions
php55w-devel.x86_64 : Files needed for building PHP extensions
php56w-devel.x86_64 : Files needed for building PHP extensions
php70w-devel.x86_64 : Files needed for building PHP extensions
webtatic では 5.4, 5.5, 5.6, 7.0 系が選べるようです。この中で、7.0 系を見てみます。
[vagrant@localhost ~]$ sudo yum install php70w
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php70w x86_64 7.0.9-1.w7 webtatic 2.8 M
Installing for dependencies:
apr x86_64 1.4.8-3.el7 base 103 k
apr-util x86_64 1.5.2-6.el7 base 92 k
httpd x86_64 2.4.6-40.el7.centos.4 updates 2.7 M
httpd-tools x86_64 2.4.6-40.el7.centos.4 updates 83 k
mailcap noarch 2.1.41-2.el7 base 31 k
php70w-cli x86_64 7.0.9-1.w7 webtatic 2.9 M
php70w-common x86_64 7.0.9-1.w7 webtatic 1.2 M
php のバージョンは、7.0.9 が落ちてくることがわかります。最新は 2016/08/18 に出た 7.0.10 ですので、ひとつ前のバージョン(パッチレベル)です。パッケージ構成については、libzip がなくなっている以外は、現状の php-5.4 系をほぼそのまま継承していることがわかります。
remi
次に remi を見てみます。リポジトリが混ざらないように、あらかじめ webtatic を消してから調査します。
[vagrant@localhost ~]$ sudo yum remove webtatic-release
[vagrant@localhost ~]$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[vagrant@localhost ~]$ rpm -qa|grep -E '(epel|remi|webtatic)'
epel-release-7-8.noarch
remi-release-7.2-1.el7.remi.noarch
ちなみに remi とは、公式サイト http://blog.remirepo.net/pages/English-FAQ#goal によると
Providing the latest versions of the PHP stack, full featured, and some other software, to the Fedora and Enterprise Linux (RHEL, CentOS, Oracle, Scientific Linux, ...) users.
とのことです。
この状態で php のバリエーションを探してみます。
[vagrant@localhost ~]$ yum search php|grep ^php | grep -e 'php-devel'
php-devel.x86_64 : Files needed for building PHP extensions
php56-php-devel.x86_64 : Files needed for building PHP extensions
php70-php-devel.x86_64 : Files needed for building PHP extensions
php71-php-devel.x86_64 : Files needed for building PHP extensions
remi では 5.6系, 7.0系、7.1系が選べるようです。7.1 系は 7.1.0-b2 が 2016/08/04 に出たばかりの開発版ですので、地雷を避けるために、現時点では 7.0 の方を調べてみます。
[vagrant@localhost ~]$ sudo yum install php70
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php70 x86_64 1.0-5.el7.remi remi-safe 2.9 k
Installing for dependencies:
audit-libs-python x86_64 2.4.1-5.el7 base 69 k
checkpolicy x86_64 2.1.12-6.el7 base 247 k
environment-modules x86_64 3.2.10-10.el7 base 107 k
libX11 x86_64 1.6.3-2.el7 base 605 k
libX11-common noarch 1.6.3-2.el7 base 162 k
libXau x86_64 1.0.8-2.1.el7 base 29 k
libcgroup x86_64 0.41-8.el7 base 64 k
libsemanage-python x86_64 2.1.10-18.el7 base 94 k
libxcb x86_64 1.11-4.el7 base 189 k
php70-php-cli x86_64 7.0.9-1.el7.remi remi-safe 2.6 M
php70-php-common x86_64 7.0.9-1.el7.remi remi-safe 577 k
php70-php-json x86_64 7.0.9-1.el7.remi remi-safe 55 k
php70-runtime x86_64 1.0-5.el7.remi remi-safe 1.1 M
policycoreutils-python x86_64 2.2.5-20.el7 base 435 k
python-IPy noarch 0.75-6.el7 base 32 k
scl-utils x86_64 20130529-17.el7_1 base 24 k
setools-libs x86_64 3.3.7-46.el7 base 485 k
tcl x86_64 1:8.5.13-8.el7 base 1.9 M
こちらも php のバージョンは webtatic と同様です。ただパッケージ構成については、5.4 系とはだいぶ異なるようです。
ちょっとだけ調べたところ、依存関係で落ちてくる scl-utils は『メタパッケージ』を作るための仕組みで、"SC" は Software Collection の略だそうです。php70-runtime という見慣れないパッケージがありますが、ためしに入れてみたら、これもメタパッケージがらみのようでした。
結論
現状では webtatic か remi の二択かと思いますが、すでに php-5.x 系の運用に慣れていて、単なる最新版への追随で Web サーバーも apache(httpd) のままでよいということであれば、webtatic の方がシンプルでよいのかもしれません。一方、今後開発に使っていこうという場合は、新しい仕組みを導入しようとしている remi の方を選ぶ、という感じでしょうか。