※この記事は公開されてから1年半以上経過しています。情報が古い可能性がありますのでご注意ください。
Software Collections(以下SCL)を使うメリットとCentOS 6.5で動作させる方法について紹介します。
Software Collectionsとは?
Software Collections(以下SCL)はRedHat Software CollectionsのCentOS版になります。ではRedHat Software Collectionsとは何かというと、Red Hat Enterprise Linux(以下RHEL)向けの追加のソフトウェアパッケージ集で比較的新しいバージョンのWebアプリ向けのコンポーネントが提供されます。(別途Developer Toolsetというのもあるのですが、CentOS向けにはまだリリースされていません。)
SCLから提供されるパッケージは下記になります。
- Ruby 1.9.3 (ruby193)
- Python 2.7 (python27)
- Python 3.3 (python33)
- PHP 5.4 (php54)
- Perl 5.16.3 (perl516)
- Node.js 0.10 (nodejs010)
- MariaDB 5.5 (mariadb55)
- MySQL 5.5 (mysql55)
- PostgreSQL 9.2 (postgresql92)
最新とまではいきませんが、比較的新しいバージョン(安定度を考えたら妥当でしょうか)がサポートされていることが分かります。また、Node.jsやMariaDBなどの最近よく聞くソフトウェアも取り込まれています。MySQL 5.5やPHP 5.4などは嬉しい方が多そうですね。(どちらもやっぱりちょっと古いが。)
CentOSの元になっているRHELでは、長期サポート(10年)の観点からAPI/ABIのコンパチビリティを確保の為に、基本的にはソフトウェアのバージョンが変わることがありません。(例外はあるし、マイナーバージョンアップされるケースはそこそこある。)しかし、これらソフトウェアの世界は日進月歩なので、新しいバージョンを使いたいという要望は常にありました。特にWebアプリの世界では、CentOS付属のバージョンでは古すぎる、といった問題がありました。(そもそもRHELが狙っているエンタープライズの世界では、そんなにバージョンがコロコロ変わったら困るといったケースがほとんどなので、本来は困らない。)
SCLは、中身が古いといわれ続けてきた「RedHatからの回答」ということになるのだろうと思っています。
メリット
SCLはメリットばかりでデメリットはあまりないように思います。というのも、既存のパッケージを置き換えるわけではなく追加されるためです。ものによっては、同時に動かすことだってできます。それぐらいきちんと分離はされています。ということで、使わない手はありません。
他のメリットとしては、追加でサードパーティのレポジトリ(EPELなど)などを設定することなく、CentOS公式のパッケージのみで、安心して利用できるといったことがあげられると思います。ケースによるとは思いますが、これは大きいと感じる方も少なくないでしょう。
利用方法
それでは早速設定していきましょう。なお、以下はCentOS6.5 x86_64を想定しています。
SCLのレポジトリを有効にする
SCLのレポジトリ設定のファイルは、CentOS Extrasレポジトリ(デフォルトで有効になっています。)にrpmとして提供されていますので、コマンド一つで有効にすることができます。
# yum install centos-release-SCL
パッケージの確認とインストール
yum listで確認することができます。また、すでに各地にミラーされているため、適当なミラーサイトの中を直接みても良いと思います。(CentOS6.5/SCL配下にあります。)
# yum list | grep scl mariadb55-mariadb-server.x86_64 5.5.35-1.1.el6.centos.alt scl mariadb55-mariadb.x86_64 5.5.35-1.1.el6.centos.alt scl mysql55-build.x86_64 1-14.el6.centos.alt scl mysql55-mysql-devel.x86_64 5.5.36-1.1.el6.centos.alt scl php54-php-cli.x86_64 5.4.16-7.el6.centos.alt.1 scl php54-php-common.x86_64 5.4.16-7.el6.centos.alt.1 scl ........ ※適当にピックアップしています。
# yum install php54-php-cli Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: php54-php-cli x86_64 5.4.16-7.el6.centos.alt.1 scl 2.6 M Installing for dependencies: php54-php-common x86_64 5.4.16-7.el6.centos.alt.1 scl 581 k php54-runtime x86_64 1-7.el6.centos.alt scl 1.0 M scl-utils x86_64 20120927-8.el6.centos.alt scl 15 k Transaction Summary ================================================================================ Install 4 Package(s) Total download size: 4.2 M Installed size: 12 M Is this ok [y/N]: y
パッケージをみると分かりますが、通常のパッケージ名(mysql-serverなど)の前にソフトウェア_コレクション名(mysql55など、上述の提供パッケージの右にカッコで記載した文字列)を付けた形で提供されているのが分かります。このソフトウェア_コレクション名は色々な場面で必要になります。
パッケージをインストールすると、依存関係でscl-utilsパッケージも一緒にインストールされます。これはsclを使う上で必要になってくるパッケージです。この後で説明していきます。
SCLの使い方
SCLからインストールしたソフトウェアを使うには、sclコマンドを使う必要があります。具体的には「scl enable ソフトウェア_コレクション名 'コマンド'」の形で実行します。
$ scl enable php54 'php -v' PHP 5.4.16 (cli) (built: Dec 11 2013 16:55:27) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies #
面倒ですね。次のようにShellを起動してしまえば、指定したソフトウェア_コレクション名を利用する環境が整ったシェルを起動することができます。
$ scl enable php54 bash # php -v PHP 5.4.16 (cli) (built: Dec 11 2013 16:55:27) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies $
基本的には環境を整えている(PATHやMANPATHなど)だけなので、直接実行することもできます。
$ /opt/rh/php54/root/usr/bin/php -v PHP 5.4.16 (cli) (built: Dec 11 2013 16:55:27) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies $
サービス系の場合は次のようになります。
# service mysql55-mysqld start mysql55-mysqld を起動中: [ OK ] #
こちらも指定するサービス名はソフトウェア_コレクション名が頭につく形になります。
直接実行のパスをみて?と思った方もいるかもしれませんが、SCLからインストールされるソフトウェアは「/opt/rh/ソフトウェア_コレクション名」配下にインストールされます。/opt配下にインストールされるため、既存のパッケージと混ざることがない、ということがわかると思います。
その他
基本的にはsclコマンドに慣れることと/opt/rh配下にすべてあることを覚えてしまえば、普通に使いこなせると思いますので、どんどん触っていきましょう。CentOS標準のパッケージとSCLのパッケージを両方入れた(mysql-serverとmysql55-mysql-serverなど)場合、かなり混乱するので要注意です。(間違って、標準のmysqlを起動してしまったり、my.cnfの編集を/etc/my.cnfと/opt/rh/mysql55/root/etc/my.cnfで間違えたり。やはり両方を入れない方が良いと思います。)
もう少し細かい話についてはRed Hat Software Collections 1.0を参照してください。このドキュメントでは、標準のMySQL5.1からSCLのMySQL5.5へのマイグレーション方法なども記載されています。