お疲れ様です。すぺきよです。
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も逆輸入してくれると便利になりそうです。