CentOSのyumレポジトリ: EPEL, Remi, Software Collectionsの違いとまとめ

先日CentOSでLAMP環境を構築する機会があったのですが、サードパーティのyumレポジトリは使用したくないため、いろいろ探してみたところ、Software Collections(SCL)というCenｔOSの公式レポジトリ(要追加)があることがわかりました。結構新しいバージョンのphpやhttpd,mysql(mariadb)が配布されているため、手っ取り早く環境を構築したい人はおすすめです。

本記事では、EPELやRemiなどその他の主だったyumレポジトリと比較してSoftwareCollectionsの位置づけと概要をまとめてみたいと思います。

## EPEL
EPELとは**Extra Packages for Enterprise Linux**の略で、Fedoraの有志が作成、メンテナンスしているRed Hat Enterprise LinuxやCentOSでも使えるパッケージレポジトリのことです。

>Red Hat Enterprise Linux (RHEL) 向けの高品質なアドオンパッケージであり、CentOS や Scientific Linux (SL) のような RHEL からスピンオフしたディストリビューションと互換性のある、Fedora プロジェクトで有志によって作成されたパッケージになります。

https://fedoraproject.org/wiki/EPEL/ja

御存知の通りFedoraは先進的・実験的なLinuxのディストリビューションとなっており、ここでテスト・検証されて品質を高めたものが商用であるRed Hat Enterprise Linux(RHEL)に取り込まれることになります。

CentOSは概ねRHELをオープンソース化したものですので、CentOSはEPELのパッケージを利用することができます。ただし、Red Hatが公式に管理しているわけではなく、品質が保証されているわけでもありませんので、利用には注意が必要です（特に会社で利用できるレポジトリ・パッケージが定められている場合）。

使用するには下記のコマンドを実行してepel-releaseをインストールします。

```
yum install epel-release
```

### 参考
https://fedoraproject.org/wiki/EPEL

## Remi
Remiレポジトリは様々なバージョンのphpのパッケージを配布しているレポジトリで、Fedoraのプロジェクトコントリビューターであり、後述するCentOS SCLのSIGのメンバーでもあるRemi Colletさんによって運営されています。
[公式サイト](https://rpms.remirepo.net/)によると、Remiレポジトリの役割として以下のことが挙げられています。

>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. It mainly contains :

>- packages I also maintains in Fedora
>- backports of packages available in Fedora development version
>- some packages incompatible with Fedora policy
>- some packages in progress before being submitted to Fedora repository
>- (nearly) vanilla versions

だそうです。

### 現在提供されているphpのバージョン
- 7.2.3
- 7.1.15
- 7.0.28
- 5.6.34
- 5.5.38
- 5.4.45

### インストール方法
[レポジトリの設定方法](https://blog.remirepo.net/pages/Config-en)のページを読めば分かりますが、こちらの[設定ウィザード](https://rpms.remirepo.net/wizard/)を見たほうが分かりやすいと思います。利用しているOS(例えばCentOS6)、インストールしたいphpのバージョン、インストール方法(single version/multiple version simultaneously)を選択すると、インストールのための手順を表示してくれます。

例えばCentOS 7にphp-7.2.3をsingleでインストールしたい場合は、こんなふうにインストールするようです。

```
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php72
yum update
yum install php-xxx
```

上記の通り、Remiを使うためにはEPELもインストールする必要があるので注意が必要です。
また、公式レポジトリのパッケージを上書きしてしまう可能性もあるのでこちらも注意が必要です(remi-safeというレポジトリからインストールする場合は、上書きは発生しないようです)。

## Software Collections(SCL)
Software Collections(SoftwareCollections.org)はRed Hat Enterprise Linux, Fedora, CentOSで最新のバージョンの言語やRDBMSなどのミドルウェアのパッケージを集めたプロジェクトです。RHEL（とCentOS)の公式レポジトリがだいぶ古くなっていて不便なので、SCLのコミュニティが管理・運営をして新しめのパッケージを配布してくれています。
https://www.softwarecollections.org/en/about/

そのうちCentOSの公式のSCLチームが提供しているパッケージは基本的にSCLのなかでも**centos-release-scl**というレポジトリで配布されています。これはCentOSとしてはサードパーティではなく**Additional CentOS Provided Repositories**として配布されているので、**公式レポジトリの一部**として利用できそうです。
https://wiki.centos.org/AdditionalResources/Repositories

また、[SoftwareCollections.orgのサイト](https://www.softwarecollections.org/en/scls/)からもSCLのパッケージを検索することができます。各パッケージごとのインストール方法などの説明もあるため、便利です。ただし、サードパーティのパッケージも含まれているので利用には注意が必要です。

余談ですが、SoftwareCollections.orgにはRedHatのSCLチーム(RHSCL)が提供しているパッケージもあり、CentOSのSCLチームが配布しているパッケージと同名ものがあります。詳細は各パッケージのインストール方法を見れば分かるのですが、CentOSでのインストール方法とRHELでのインストール方法が分かれています。

なお上述のRemiさん[ここ](https://www.softwarecollections.org/en/scls/user/remi/)にもいました。赤い帽子(Red Hat!)がステキ。

### 提供しているphpのバージョン
[こちら](https://wiki.centos.org/SpecialInterestGroup/SCLo/CollectionsList)を確認する限り、以下のバージョンが公開されているのを確認できます。

- 5.4
- 5.5
- 5.6
- 7.0
- 7.1

今現在では7.2はまだ公開されていないですね。それ以外はRemiで提供されているものは全てこちらでカバーできています。きっとRemiさんはこっちでも頑張ってくれているんだと思います。

と思ったらやはり[こちら](https://wiki.centos.org/RemiCollet)にいらっしゃいました。唐突すぎる写真にびっくり。

### インストール方法
```
yum --enablerepo=extras install centos-release-scl
```

### php7.1をインストールする場合
```
sudo yum install centos-release-scl #上記と同様
sudo yum install rh-php71
scl enable rh-php71 bash
```

https://www.softwarecollections.org/en/scls/rhscl/rh-php71/

なお、最後の `scl enable rh-php71 bash`はsclからインストールしたパッケージを、CentOSのシステム内部のパスに登録するコマンドのようです。詳しくは[次回](https://qiita.com/takeshi_nozawa/items/31e9ad333feb654a2c86)解説したいと思います。

### 参考
https://wiki.centos.org/AdditionalResources/Repositories
https://wiki.centos.org/AdditionalResources/Repositories/SCL

## まとめ
ということでEPEL, Remi, SoftwareCollections(SCL)の３つのレポジトリについてそれぞれの特徴を見てきました。
一部Remiさんの追っかけ記事みたいになっちゃいましたが、ご参考になれば幸いです。

[SCLを使ってLAMP環境を作ってみました！](https://qiita.com/takeshi_nozawa/items/31e9ad333feb654a2c86)

## その他参考
- https://qiita.com/bezeklik/items/9766003c19f9664602fe
- https://wiki.centos.org/AdditionalResources/Repositories#line-68