CentOSからCentOS Streamへ。CentOS終了の衝撃

<font color="red">2021/10/06追記</font>
フリーのCentOS後継プロジェクトとして、[Rocky Linux（2021/6-）](https://rockylinux.org/)や[MIRACLE LINUX（2021/10-）](https://www.cybertrust.co.jp/miraclelinux-license-free/)がリリースされています。

<font color="red">2021/04/05追記</font>
CentOS後継プロジェクトのなかで、CloudLinux teamが開発する<a href="https://almalinux.org/">AlmaLinux</a>が正式リリースされました。そこで以下の記事を書きました。
[AlmaLinuxを使ってみた](https://qiita.com/yamada-hakase/items/245da3df19e9334d041c)

<font color="red">2021/01/21追記</font>
2021/1/20のRED HAT BLOGにRHELサブスクリプション無償枠拡張の[アナウンス](https://blogs.oracle.com/linux/need-a-stable%2c-rhel-compatible-alternative-to-centos-three-reasons-to-consider-oracle-linux)がありました。そこで以下の記事を書きました。
[CentOS終了に対する大ブーイングでRHELが一部無償になるらしい](https://qiita.com/yamada-hakase/items/9d03c156ceac31fde6c4)

<font color="red">2020/12/14追記</font>
CentOS終了に伴い、Rocky Linuxのリリースが発表されました。
[ZDNet Japan: CentOSプロジェクトの創始者、「Rocky Linux」プロジェクトを立ち上げ](https://japan.zdnet.com/article/35163796/)

# CentOSからCentOS Streamへ
2020/12/08のCentOS公式ブログで[「CentOS Project shifts focus to CentOS Stream」](https://blog.centos.org/2020/12/future-is-centos-stream/)という記事が発表された。
![centos8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266049/999a9299-3243-7b04-29e4-657eb83f0aa8.png)

<font color="red">簡単にまとめると次のとおり。</font>

* **CentOS 8は2021/12/31でサポートが終了する**
* **CentOSは今後CentOS Streamに移行する**
* **CentOS Streamは、RHELのアップストリーム（開発）ブランチ。従来のリビルドしたものとは違う位置づけ**
* **CentOS 7のサポート期間は従来通り2024/06/30で変わらず**
* **CentOS 8の利用者は、差分が少ないCentOS Streamに移行するか、本番環境利用で心配ならばRHELに移行することが推奨されている**

参考までにCentOS / RHELのサポート期間は次のとおり。

| バージョン | サポート終了 |
|:-:|:-:|
| RHEL/CentOS 6  | 2020/11/30  |
| RHEL/CentOS 7  | 2024/06/30  |
| <font color="red">CentOS 8</font>  | <font color="red">2021/12/31</font>  |
| <font color="red">RHEL 8</font>  | <font color="red">2029/05/31</font>  |

# CentOS Streamとは
CentOS Streamは以下の赤帽ブログが詳しい。Fedoraほど離れていないけれど、開発ブランチという位置づけ。

* [Fedora/CentOS Stream/CentOS/RHELの関係性](https://rheb.hatenablog.com/entry/202007-fedora-distribution)
* [CentOS Stream入門](https://rheb.hatenablog.com/entry/centos-stream-intro)

RHELとCentOS Streamの関係について、わたしのイメージは下図のとおり。
![centos8-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266049/b33d8c7f-700b-1afd-6520-c1247bfcc109.png)

# 世間の反応
日本のいろいろなネットニュースで取り上げられているけれど、CentOS blogのコメント欄が荒れまくり。Ubuntuに行くって声が多い。

Scientific Linuxはすでに開発中止。となるとProductionで使えるRHEL互換ディストリビューションはOracle Linuxなのだけれど、Oracleは嫌われものなのでネガティブな意見が多い。

CentOSは**"poorman's RHEL"**だから、RHELに行けと言われてもつらい。個人や開発環境ならCentOS Streamを使うのもありだけど。

# 個人的に思うこと
以前の商用パッケージ製品は、RHELやSUSEのような商用ディストリビューションしかサポートしていなかった。だけれど最近はAmazon LinuxやCentOSをサポートするパッケージも増えてきた。Amazon Linuxはシェアもあるし、AWSのサポートもあるしね。

今回の出来事で、CentOS Streamをサポートする商用パッケージは大幅減の予感。本番環境で使うってのも、エンタープライズ系の人たちはしなさそう。

エンタープライズ＆本番環境で使うなら、RHELに行けってことなのだけれど、お金ある人はすでに使ってるはずだし。それとは別に、Red Hatエンタープライズ契約って条件が厳しいんだよね。部分解約が困難とか。

UbuntuやSUSE。うーん。

Ubuntuはエッジやデスクトップ、個人利用で使っても、日本のエンタープライズ＆本番環境となると苦戦しそう。Ubuntu LTSは最低5年だけれど、日本のシステム更改間隔を考えると短いんだよね。

SUSEを使っているエンタープライズ系のユーザーにたまに出会うのだけれど、日本では現状のマイナー感を脱するのは想像できない。ちなみに、筆者は20年前にLinuxディストリビューション開発にかかわっていました。いまはかかわっていないけど。

Oracle Linuxは選択肢の一つだと思うけれど、宗教上の理由（？）でOracleを使いたくない人が多そう。最近[AWSでOracle Linuxが使える](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/aws-managed-services-now-supports-oracle-linux-7-5-and-later-minor-versions/)ようになっていてビックリ。

今回のことはOracle Corporationも気になったようで、2020/12/12のブログで移行方法を紹介している。

* [Need a stable, RHEL-compatible alternative to CentOS? Three reasons to consider Oracle Linux](https://blogs.oracle.com/linux/need-a-stable%2c-rhel-compatible-alternative-to-centos-three-reasons-to-consider-oracle-linux)

<font color="red">2020/12/16追記</font>
上記ブログで紹介しているスクリプトを実際に実行してみました。

* [CentOSからOracle Linuxへスクリプトで簡単に移行する](https://qiita.com/yamada-hakase/items/22fef96e6fa61dea6104)

# RHEL互換ディストリビューションの作成方法

参考までに、RHEL互換ディストリビューションの一般的な作成方法を紹介する。テストなどは省略。

1. RHELからソースRPMを入手
1. ロゴなど商標権に関わる部分をはじめとして、そのまま利用できないものを削除
1. ディストリビューション固有の変更（味付け）
1. リビルド
1. ISOイメージ化

この中で重要なことが2点ある。

1つめは「ディストリビューション固有の変更」。具体的には、既存のRPMパッケージに対する修正や、新規パッケージの追加。互換性を維持する必要があるので、kernelやglibc、gcc、binutilsなどのコアコンポーネントには手を加えないこと。もしくは、手を加えるとしても、必要最小限にすること。

CentOSの場合は、/etc/redhat-releaseから/etc/centos-releaseへの変更など最小限に抑えている。

CentOS blogのなかでrebuildという表現が出ているけれど、これは上記「4.リビルド」を指している。ニュアンスとしては、ソースを変更しないでリビルドしただけ。

2つめはリビルド時のビルド環境構築。これはプロダクトには含まれないけれど、同一ソースであってもビルド環境（おもにライブラリ群）が異なると、できあがるバイナリも異なる。そのため互換性のあるビルド環境を構築するのは、RHEL互換ディストリビューション作成者の腕の見せ所。

また「RHELのソースはGPLだから、商標権/著作権上まずい部分を削除すれば自由に使える」なんてことを言う人もいるけれど、Red Hatエンタープライズ契約を承諾しているユーザーにとっては、ダークグレーゾーン～ほぼOUT。詳しくは契約書を読んでみて。

**ところで「リビルドだけなら簡単」とは思っていませんか？**

はっきり言って甘い！　Red Hatからスポンサードされる前のCentOSのリリースがどれだけ遅れていたか。マイナーバージョンは一ヶ月くらいでキャッチアップできていたけれど、メジャーバージョンアップの6.0などはインストーラーの改造もあって半年以上リリースが遅れた。

<font color="red">2020/12/19追記</font>
その後、CentOS blogに開発に関する投稿があり、赤帽ブログに翻訳記事が掲載された。興味のある方はどうぞ。

* [RHELはどのようにして作られるか](https://rheb.hatenablog.com/entry/how-rhel-is-made)
* [CentOS Streamは継続的デリバリーです](https://rheb.hatenablog.com/entry/centos_stream)

Rocky Linuxに続いて、いくつか開発表明されているけれど、ほとんどが残らない予感。信頼性の高いものを作るって大変なんだよね。テストが不十分なものを使うくらいなら、CentOS Streamのほうがよっぽどいいし。

**結局のところタダ乗りが課題**

いろいろ文句を言うのは勝手だけれど、OSSの開発者を苦しめているのは資金だろう。現在の主要Linuxディストリビューションは、Red HatやSUSE、Canonicalなど会社がマネタイズしながら、OSSにも還元していることを利用者は忘れてはならない。

マニュアルを作るのも莫大な作業だ。正直なところ、ネットで検索できる情報の質は玉石混交でクズ情報も多い。元は優れたものでも、古くなり陳腐化することもある。それらと比べるとベンダーの公式マニュアルは頼りになる。サポート契約者だけに提供されるナレッジは、さらに頼れる。

* [RHELのマニュアル](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/)
* [Oracle Linuxのマニュアル](https://www.oracle.com/jp/linux/technologies/oracle-linux-documentation.html)

ソースコードを書いて貢献するのは難しくても、バグ報告やマニュアルバグ指摘なども貢献の一つだ。また、個別のOSSで言えば、manやマニュアルの日本語化なども、開発者に感謝される。

さらに間接的にはなるが、Qiitaやはてなブログ、書籍や雑誌などに優良な記事を書くことも、わずかながら貢献していることになるだろう。