CentOSとそれの元になっているRedhat Enterprise Linuxは例えば6.0がリリースされるタイミングでApacheやPHPのバージョンを決め、それ以降は6.Xが終了するまでそのバージョンを使う。セキュリティパッチなどは公式の最新版を直してそれを自分のディストリビューションに取り込むという方式でやっているので安全性も安定性も高い(のだと思われる)。

ところが往々にしてCentOS6でApache 2.4+PHP 5.6+MySQL 5.6を使いたい(Cent6本来はApache 2.2+PHP 5.3+MySQL 5.1)というような話が出てくる。

そういう用途に使える外部リポジトリーとしてremiがよく紹介されているが、昔はCentOSのwikiで「(remiを使うのは)推奨しない」などと書かれていたので(今ではなくなっているようだ)本番環境に使うのは恐い。

ではソースからコンパイルするしかないのか。そこで使えるのがSoftware Collectionsだ。これは元々RedhatがRHELのために用意した新しいバージョンのソフトたち(を入れたリポジトリ)で、Perl、PHP、Rubyなどのスクリプト言語やApache、PostgreSQL、MySQLなどの主要なサーバーをRedhatがRHELのために調整・試験を行って提供している。

CentOS6や7では以下のようにextrasリポジトリーからyumでSoftware Collectionsリポジトリーを追加できる。

# yum install centos-release-scl

ちなみにepelに関してもCentOS標準のextrasリポジトリーにEPELのRPMが用意されている。

# yum install epel-release

で即EPELを利用可能だ。このようにEPELとSCLはextrasリポジトリーとは言えCentOSの公式リポジトリー内に入っているのが(外部リポジトリーとして)信頼性が高いと言える。

では試しにCentOS6にMySQL 5.6を導入してみよう。CentOS6にはSCLにて2016年9月24日現在MySQLの5.5、5.6とmariadbの5.5ならびに10.0、10.1が提供されているようだ。

# yum install rh-mysql56

これで/opt/rh/rh-mysql56にMySQL5.6の一式が入る。データの場所は/var/opt/rh/rh-mysql56に、設定ファイルの場所は/etc/opt/rh/rh-mysql56になるのにソケットの場所は/var/lib/mysql/mysql.sockのままのようだ。互換性を考慮した結果だろうか。/etc/opt/rh/rh-mysql56/my.cnfがあるがその中で/etc/opt/rh/rh-mysql56/my.cnf.d/mysql-server.cnfをインクルードしているのでそちらに書いた方が良いのだろうか。

とにかくこれで手軽に安心に安全にCentOSでも新しいバージョンのデータベースやPHPを使う事ができるようになるのが分かって選択肢が広がった。