カテゴリー別アーカイブ: ソフトウェア・開発

CentOS 8のサポート期間の考え方は6や7とは異なります

CentOS 8.x (クローン元であるRHEL 8も含む)では CentOS 6 や 7 までとはいくつかサポート期間(サポート期限)の扱いが異なっています。

CentOS 8 ではOSとしての機能を提供する「BaseOS」リポジトリと、開発言語やデータベースサーバー等を提供するアプリケーションストリームのリポジトリである「AppStream」リポジトリの2つのリポジトリで構成されます。また、パッケージ管理を行うdnf(これまでと同様にyumコマンドを実行した場合もdnfが呼ばれる)にはモジュールという仕組みが有り、モジュールの切り替えという概念が追加されています。

BaseOS リポジトリ:
CentOS 8 のOSとその周辺機能が提供されます。
サポート期限は2029年5月末まで。

OSとその周辺機能は10年間のサポートが提供されます(末尾のリンク「CentOS Product Specifications」を参照)。この期間はCentOS 7と同様です。

AppStream(アプリケーションストリーム)リポジトリ:
各種開発言語やRDBMS、サーバーアプリケーション等が提供されます。
サポート期限はアプリごとのストリームにより異なります。

https://access.redhat.com/support/policy/updates/rhel8-app-streams-life-cycle

主な内容とそれぞれのサポート期限は上記リンクを参照してください。RHELでの情報ですがクローンであるCentOSも同じ扱いになるかと思います。AppStreamではApache、Nginx、PHP、Ruby、Python、Perl、OpenJDK、MySQL、MariaDB、PostgreSQL、Redisなどが提供されています(*1)。

アプリケーションによっては複数バージョンから選択して導入する事が出来るようになっており、どのバージョンを導入するかはモジュールの有効化・無効化で選択する事が可能です。モジュールは例えばPHPであればCentOS 8.0 1905時点では7.2のみの提供でしたがCentOS 8.1 1911でPHP 7.3のモジュールが選択できるようになり、同様にNodeJSでは10に加え12が、Rubyでは2.5に加え2.6が選択出来るようにっており、ある程度新しいバージョンをキャッチアップしていく事が可能なようです。

現在利用可能なモジュールは
dnf module list (yum module listでも可)
を実行する事で表示されます。また、
dnf module list –enabled
を実行する事で現在有効なモジュールのみが一覧表示されます。

なお、AppStreamで提供されているすべてがモジュールになっている訳ではなく、例えばgitコマンドなど複数バージョンから選択して導入するという要素が無いようなものはモジュールの選択は有りません。

つまりCentOS はCentOS 7までの

・サポート期間が開発言語やRDB、Webサーバー等含めディストリビューション全体で長大で、本家でサポート期間が終了していてるソフトウェアでもある程度のセキュリティフィックスが提供される。
・そのサポート期間を目的にする場合は化石のようなバージョンを使い続ける必要が有る(例えばCentOS7ではPHPは5.4が導入される)。それが困るので有れば別途リポジトリを追加するなりコンパイルするなりして導入する。

というディストリビューションからCentOS 8では

・OSとその周辺機能のサポート期間は10年確保しつつ、開発言語やRDBMS等の各種アプリケーションのサポート期間はそれよりも短い期間。
・各種アプリケーションは比較的新しいバージョンに能追従可能(追従していく必要が有る、とも言う)で、公式リポジトリのみでバージョンの切り替えができる。

というディストリビューションに変化します。

「化石バージョンでいいなら全てが長期間サポートされる一枚岩のLinuxディストリビューション」ではなくなったので、利用ソフトウェアの運用方針に注意しましょう。

About/Product – CentOS Wiki
https://wiki.centos.org/About/Product

Using AppStream :: CentOS Docs Site
https://docs.centos.org/en-US/8-docs/managing-userspace-components/assembly_using-appstream/

Managing versions of Application Stream content :: CentOS Docs Site
https://docs.centos.org/en-US/8-docs/managing-userspace-components/assembly_managing-versions-of-appstream-content/

※1: メール関連ではPostfixはBaseOSリポジトリで提供される一方でDovecotはAppStreamリポジトリ内に含まれています。何とも言えない基準。


ZabbixでRDBにMariaDB 10.2 10.3 10.4 を使う場合の注意点

2019年11月時点でのZabbixのLTS(長期サポート版)は 4.0 系が最新バージョンとなっていますが、Zabbix 4.0 (や 4.2)をMySQLではなくMariaDB 10.2 ~ 10.4で導入する場合には現状注意点(というか不具合)に近いものが有るので要注意です。

詳細は以下のURLをご確認ください
https://support.zabbix.com/browse/ZBX-16757
https://support.zabbix.com/browse/ZBX-16465
https://support.zabbix.com/browse/ZBX-16465

もともとMariaDB 10.1等を使っている環境から移行した場合に特に問題なく動いているように見えても、DBのフルダンプを使って復元しようと思った際に踏んでDBのインポートに失敗したりします(しました)。

この問題が修正されているのはZabbix 4.4 以降になるため、4.0 LTSを使う場合はMySQLなど他のRDBMSを使った方が無難です(MariaDB 10.1 は2020年中にサポートが終了します)。


Twig 3系に備えてTwig 1.x系を2系に更新しておこう

タイトルで完結しているかつ詳細も次のリンクで全てなのですが、利用者がそれなりに多そうな話題を見かけなかったので。

Preparing your Applications for Twig 3

Symfonyやそれ以外の環境でもよく使われているPHP向けテンプレートエンジン Twig の バージョン 3系が2019年末頃にリリースとなります。Twigは古いバージョンのPHPにも対応する1.x系とある程度新しいバージョンにのみ対応する2.x系が有りどちらもメンテナンスが続いていますが、3系のリリースに備えて1.xユーザーの方は2系に移行するようアナウンスされています。

移行のために

まずPHPの対応バージョンは以下のようになっています。いずれも composer.json で指定されている値です。

Twig 1.x : PHP 5.5.0 以上
Twig 2.x : PHP 7.0 以上
Twig 3.x : PHP 7.2.9 以上

1.x から 2.xは基本的には入れ替えるだけでそのまま動きます。ただし2.x で depricated (廃止予定)となったものや internal (内部的に使う関数であり直接の使用が非推奨)となっているものが 3.xで実際に廃止となりますので、まずは 2.x に移行した状態でその部分の対処を行う事で 3.x に備える事が出来ます。

該当のクラスや関数にはPHPDocのコメントが入りPhpStormなどのIDE環境においては対象箇所が視覚的に分かるようになっています。2.xで名前空間の整理が進み呼び出すクラスが変わる部分がいくつか有りますが、呼び出すクラスを変えるだけでほぼそのまま動く事が多いと思います。

2019年11月16日追記
Twig 3.0.0 がリリースされたようです
https://github.com/twigphp/Twig/releases/tag/v3.0.0