CentOSでRuby 1.9.3やPython 2.7、Python 3.3などを使う簡単な方法
昨年、『米Red Hat、RHELの開発環境をアップデートする「Developer Toolset 2.0」および「Software Collections 1.0」をリリース』という話題がありました。
Red Hat Enterprise Linux(RHEL)は安定性を重視し、かつ長期にわたって利用されることを想定しているため、ディストリビューションに含まれているソフトウェアは比較的古めのものになっています。そのため、RHELに標準で含まれていない最新のソフトウェアを利用したい場合、自分でソースコードからビルドするか、サードパーティのリポジトリを利用する必要がありました。
この「Software Collections」(以下SCL)は、そういった背景の下、RHELに含まれていないソフトウェア、もしくはRHELに含まれているものよりもバージョンが新しいソフトウェアを提供するもので、たとえば以下のようなソフトウェアが提供されます。
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)
特にRubyにおいては、近年RHELに収録されているRuby 1.8.7をサポートしないライブラリやソフトウェアが増えてきたため、Ruby1.9.3が簡単に導入できるのは便利なところです。
そして、CentOSがRed Hatの正式プロジェクトとなった影響なのか、このSCLもCentOSで利用できるようになりました(CentOS-announceメーリングリストに流れたアナウンスメール)。
導入方法は非常に簡単で、「centos-release-SCL」パッケージをインストールするだけです(ドキュメント)。ただし、利用できるのはx86_64のみとなっています。
# yum install centos-release-SCL
centos-release-SCLパッケージのインストール後は、yumコマンドでそれぞれのパッケージをインストールできるようになります。たとえばruby 1.9.3をインストールするには、以下のようにします。
# yum install ruby193
ただし、SCLに含まれるソフトウェアは、そのままでは実行できません(ruby193というパッケージをインストールしても、ruby193というコマンドが利用できるようになるわけではない)。実行する二は、sclコマンドを利用する必要があります。sclコマンドは、引数で指定したパッケージを有効にした状態で指定したコマンドを実行するものです。たとえば、以下のようにするとRuby 1.9.3を有効にした環境で「ruby -v」コマンドを実行できます。
$ scl enable ruby193 'ruby -v' ruby 1.9.3p448 (2013-06-27) [x86_64-linux]
また、次のように引数にシェルを指定すれば、指定したパッケージが有効になったシェル環境を起動できます。
$ scl enable ruby193 bash $ ruby -v ruby 1.9.3p448 (2013-06-27) [x86_64-linux] $ exit
ちなみに、この環境でRubyGemをインストールしたい場合はroot権限でsclコマンドを実行してからgemコマンドでインストールする必要があります。
# scl enable ruby193 bash # gem install <インストールしたいパッケージ>
そのほかの使い方などはドキュメントをご参照ください。