Amazon Linux 2023で利用可能なパッケージのEOLを確認する方法

Web開発

お疲れ様です。すぺきよです。

Amazon Linux 2023ではApacheやPHP、nginxなどのパッケージはdnfコマンドを利用してインストールします。

OSのEOL(End of Life:サポート期限)とパッケージごとのEOLが違うことがよくあります。

Red Had Enterprise Linux(RHEL)ではホームページ上にパッケージのEOLの一覧を記載していますが、Amazon Linux 2023にはそのようなページが見当たりません。

そこでAmazon Linux 2023ではパッケージごとのEOLをどのように調べればいいのか、調査してみることにしました。

概要

Amazon Linux 2023でdnfコマンドを利用してインストールできるパッケージのEOLを確認する方法と、実際にいくつか確認してみた結果について記載します。

この記事を読むとわかること

Amazon Linux 2023でdnfコマンドを利用してインストールできるパッケージのEOLを確認する方法として以下の方法がわかります。

  • 特定のパッケージのEOLを確認する方法
  • インストール済みのパッケージのEOLを確認する方法
  • インストール可能なパッケージのEOLを確認する方法

パッケージのEOLの確認方法

どこで確認するのか

Amazon Linux 2023では、OSのEOLはホームページ上で公開していますが、パッケージ単位のEOLはホームページ上で公開していないようです。

パッケージ単位のEOLを確認するためには、dnfのサブコマンドであるsupportinfoのコマンドを使います。

特定のパッケージのEOLを確認する方法

まずは、特定のパッケージのEOLを確認する方法です。

以下のように「–pkg」スイッチとパッケージ名を指定することでEOLなどを確認することができます。

<packagename>の部分にはEOLを確認したいパッケージの名前を指定します。

$ sudo dnf supportinfo --pkg <packagename>

たとえば、Apache(パッケージ名:httpd)のEOLを確認したいのであれば、以下のようにコマンドを実行します。

$ sudo dnf supportinfo --pkg httpd

すると、以下のようにインストール可能なパッケージのバージョンやサポート状況、EOLなどが表示されます。

Name                 : httpd
Version              : 2.4.56-1.amzn2023
State                : installed
Support Status       : supported
Support Periods      : from 2023-03-15      : supported
                     : from 2028-03-15      : unsupported
Support Statement    : Amazon Linux 2023 end-of-life
Link                 : https://aws.amazon.com/amazon-linux-ami/faqs/
Other Info           : This is the support statement for AL2023. The end-of-life
                     : of Amazon Linux 2023 is March 2028. From this point, the
                     : Amazon Linux 2023 packages will no longer receive any
                     : updates from AWS.

EOLが記載されている箇所は「Support Periods」の項目です。

Apacheの場合、「 : from 2023-03-15 : supported」と「: from 2028-03-15 : unsupported」の記載があります。

これは、「2023年3月15日からサポートが開始され、2028年3月15日からはサポートされなくなる」という意味になります。

Amazon Linux 2023のOSのサポート期限は2028年3月15日なので、OSがサポートされている間はhttpdもサポートされ続けるようだ、ということがわかります。

上記出力結果は、「State」が「installed」でインストール済みになっていますが、まだインストールしていないパッケージであっても確認可能です。

たとえば、同じwebサーバーで、インストールしていないNGINXを確認すると以下のように出力されます。

Name                 : nginx
Version              : 1.24.0-1.amzn2023.0.1
State                : available
Support Status       : supported
Support Periods      : from 2023-03-15      : supported
                     : from 2028-03-15      : unsupported
Support Statement    : NGINX has security support until March 2028
Link                 : https://aws.amazon.com/amazon-linux-ami/faqs/
Other Info           : AL2023 will keep ingesting new upstream NGINX releases.
Package Note         : This package has a runtime dependency on nginx, and thus
                     : also falls under the support statements for nginx.
                     : Upstream end-of-life for NGINX (nginx) is 2028-03-15

NGINXの場合も同じくOSと同期間サポートされるようですが、サポートの主体はAmazonではなくNGINX公式からのサポートとなるようですね。

インストール済みのパッケージのEOLを確認する方法

次に、現在のインスタンスにインストール済みのパッケージ全体のEOLを確認する方法です。

以下のように「–show installed」スイッチを使用します。

$ sudo dnf supportinfo --show installed

このままだと、大量に結果が出力されてしまします。

これでは見づらいので、以下のようにgrepコマンドなどと組み合わせることで、特定のパッケージのみの結果に絞ることが可能です。

ここでは例としてgrepコマンドと組み合わせて、httpdと名前のつくパッケージを表示してみます。

$ sudo dnf supportinfo --show installed | grep httpd

すると以下のような結果を得ることができます。

generic-logos-httpd                        18.0.0-12.amzn2023.0.3               installed          supported          2028-03-15         Amazon Linux 2023 end-of-life
httpd                                      2.4.56-1.amzn2023                    installed          supported          2028-03-15         Amazon Linux 2023 end-of-life
httpd-core                                 2.4.56-1.amzn2023                    installed          supported          2028-03-15         Amazon Linux 2023 end-of-life
httpd-filesystem                           2.4.56-1.amzn2023                    installed          supported          2028-03-15         Amazon Linux 2023 end-of-life
httpd-tools                                2.4.56-1.amzn2023                    installed          supported          2028-03-15         Amazon Linux 2023 end-of-life

httpdに関するパッケージは「Amazon Linux 2023 end-of-life」となっているので、Amazon Linux2023のサポートが終了するまではサポートされるようですね。

全ての利用可能なパッケージを確認

次にAmazon Linux 2023で利用可能な全てのパッケージのEOLを確認する方法です。

以下のように「–show all」スイッチを利用します。

$ sudo dnf supportinfo --show all

こちらもこのままでは、大量に結果が出力されてしまい、見づらいです。

例えば、以下のようにgrepと組み合わせてhttpdとnginx、nodejs、phpの名前のつくパッケージを表示することが可能です。

$ sudo dnf supportinfo --show all | grep -E "(httpd|nginx|nodejs|php)"

すると、以下のような結果が得られます。

nginx                                      1.24.0-1.amzn2023.0.1                available          supported          2028-03-15         NGINX has security support until March 2028
<中略>
php8.1                                     8.1.23-1.amzn2023.0.1                installed          supported          2024-11-25         PHP 8.1 has security support until November 2024
php8.2                                     8.2.9-1.amzn2023.0.3                 available          supported          2025-12-08         PHP 8.2 has security support until December 2025
<中略>
httpd                                      2.4.56-1.amzn2023                    installed          supported          2028-03-15         Amazon Linux 2023 end-of-life
<中略>
nodejs                                     18.17.1-1.amzn2023.0.2               available          supported          2028-03-15         Amazon Linux 2023 end-of-life

一部省略していますが、httpdとnodejsはサポート期間がAmazon Linux 2023と同じのようですね。

nginxはサポート終了日はAmazon Linux 2023と同じようですが、「NGINX has security support until March 2028」との記載があります。

この記載からNGINXの公式のセキュリティサポートを2028年3月まで受けることが可能であることがわかります。

PHPについては、現時点では本体である「php8.1」のサポートは「2024年11月25日」とPHPの公式のセキュリティサポート期限と同じであることがわかります。

上記では省略していますが、「php8.1-pdo 」などの他のパッケージは「Amazon Linux 2023 end-of-life」となっており、Amazonがサポートしてくれる形となっているようです。

なぜ本体だけがPHP公式サポート準拠なのか、よくわかりませんね。

希望的観測ですが、php8.1の公式サポートが終わったら、Amazon Linux 2023のサポートチームがサポートしてくれるようになるとかなのでしょうか・・・?

これは、サポートが切れるまで待ってみないとわかりませんね。多分そんなことはないと思いますが。

その他のパッケージ確認コマンド

よく利用すると思われる、上記で紹介したコマンド以外にも、次のようなコマンドが使えるようです。

サポート中のパッケージのサポート状況を確認

現在パッケージのサポート状況がサポート中であるパッケージのEOLの一覧を表示することもできます。

以下のように「–show supported」スイッチを使用します。

$ sudo dnf supportinfo --show supported

この記事を記述している時点では、すべてのパッケージがサポート中であるため、「–show all」と同様の出力が出ます。

サポート切れのパッケージのサポート状況を確認

現在パッケージのサポート状況がサポート期間外であるパッケージのEOLの一覧を表示することもできます。

以下のように「 –show unsupported」スイッチを使用します。

$ sudo dnf supportinfo --show unsupported

この記事を記述している時点では、サポート期間外となったパッケージが存在しないため、何も出力されません。

インストールされていない利用可能なパッケージのサポート状況を確認

あまり使うことはないと思いますが、まだインストールされていないパッケージのEOLの一覧を表示することもできます。

以下のように「–show available」スイッチを使用します。

$ sudo dnf supportinfo --show available

このコマンドは、どのようなパッケージがインストール可能で、EOLがどのようなよう今日であるかの確認に使う程度でしょうか。

dnf supportinfoコマンドについて

今回の記事で使用している「dnf supportinfo」コマンドですが、dnfの標準コマンドではないようです。

Amazon Linux 2023のインスタンス上で以下のコマンドを使って、ヘルプを表示してみるとコマンドの説明があります。

$ sudo dnf --help
usage: dnf [options] COMMAND

List of Main Commands:

alias                     List or create command aliases
////////// 中略 //////////
upgrade-minimal           upgrade, but only 'newest' package match which fixes a problem that affects your system

List of Plugin Commands:

builddep                  Install build dependencies for package or spec file
////////// 中略 //////////
reposync                  download all packages from remote repo
supportinfo               Get support statements for DL packages

General DNF options:
  -c [config file], --config [config file]
////////// 以下略 //////////

しかし、dnfの公式やRed Hat Enterprise Linux 8上のdnfのヘルプでは、このコマンドの説明はありません。

どうも、AWSが追加したオリジナルの機能のようです。

このコマンドは現状Amazon Linux 2023のインスタンス内でしか使えません。

まとめ

今回は、Amazon Linux 2023のパッケージのEOL確認方法をまとめてみました。

Red Hat Enterprise LinuxのようにWebページ上で公開されているのもありがたいですが、コマンド一発でいつでもパッケージのサポート期限が見れるのも意外と便利ですね。

dnf公式やRed Hat Enterprise Linuxも逆輸入してくれると便利になりそうです。

参考文献

タイトルとURLをコピーしました