RHEL/CentOS Software Collections で(少し)新しいバージョンを使える

これ最近まで知らなかった。だいぶ恥ずかしい。
Redhatは安定してるしサポートもあるし、また有償SWによっては稼働環境がRHELしかサポートしない(最近はCentOSも増えてる気がするけど)のがあったりで良いけど、リリースが長期的な分、apache/phpなどのrpmバージョンが古いので一部の用途には合ってないなーと思ってた。

例えばRHEL6系はphp5.3.3が入ってるけど、php5.3.3だとフレームワーク側が対応してなかったりで。こうなると、自前でrpmbuildしたものを使うかソースでインストールするかになる。
(ソフトウェアの管理の面ではrpmbuildするほうが良い)
大抵はこれでもいいんだけど、謎なbug(と思われる)現象に出くわした時にOS側なのか自分で入れたブツ(とその設定)が原因なのか苦しんだりしていた。

で、調べてたらRedHat Software Collectionsというのがリリースされていた。
apache2.4.6 php5.4.16 など(やはり最新ではないけど) 標準より新しいバージョンが利用可能になっている。
これはかなり嬉しい。
SCLはパッケージ名、install場所が既存のものと異なるので共存が可能。
(全パッケージを見てないので全て共存可能かは未調査。。。)
/opt/rh/ 以下にインストールされる?

RHEL6以降で64bitのみ提供されてる?

以下、CentOSで利用する場合

# yum install centos-release-SCL

yum でinstallする手順はいつもと同じ(リポジトリがsclになってる)

# yum install -y php54-php
# rpm -ql php54-php

sclで入れたブツを使う方法

1. scl コマンドで切り替える

  • man scl EXAMPLESのところ参照
# scl -l
httpd24
php54
### 1回だけsclのコマンドを実行する
# scl enable php54 'php -i' 
### sclを有効にしたbashを起動する
# scl enable php54 bash
# php -i

2. 環境変数設定用のファイルが作成されるのでこれを読み込む。
一番上の参考リンクのwebサイトにも記述されているが、
やっていることは環境変数を切り替えて実行するコマンドを変更しているだけなので、
ここを直接読み込んでもいい。

# source /opt/rh/php54/enable 
# which php 
/opt/rh/php54/root/usr/bin/php
# php -v
PHP 5.4.16 (cli) (built: Nov 19 2014 08:05:17) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies