お疲れ様です。すぺきよです。
普通にdnf upgradeしただけではパッケージが更新されないなど、癖のあるAmazon Linux 2023ですが、パッケージを常に最新に更新する方法がわかったのでまとめます。
概要
先日、当ブログで「Amazon Linux 2023はdnf updateではパッケージ更新されない」という記事を公開しました。
この記事を記述していた当時は、自動的に更新する方法がわかっていなかったため、引き続き調査・検証をしていました。
今回、その方法がわかったことと、および、Amazon Linux 2023のマイナーバージョンの2023.09.12が公開されたため、自動更新についての設定内容の確認と検証ができたのでまとめます。
この記事を読むと何がわかるか
Amazon Linux 2023でインストール済みのパッケージを常に最新の状態にアップデートするための設定方法が分かります。
dnfコマンドの設定を変更
まずは、Amazon Linux 2023のインスタンスにログインし、以下のコマンドでdnfの設定ファイルを置くディレクトリに移動します。
$ mv /etc/dnf/vars
このディレクトリ内で以下のようにviコマンド使って「releasever」というファイルを新規作成します。
$ sudo vi releasever
ファイルの中身に以下の内容を記述します。必要なのはこの6文字だけです。
latest
設定を変更する箇所は以上です。
参考:設定を変更する前と後での動作の変化
この設定変更を行う前と後でどのように動作が変わるかをメモしておきます。
パッケージのアップデートが存在するか確認するために、「dnf update-check」コマンドを実行した際の結果です。
設定変更前
============================================================================================================
WARNING:
A newer release of "Amazon Linux" is available.
Available Versions:
Version 2023.1.20230912:
Run the following command to upgrade to 2023.1.20230912:
dnf upgrade --releasever=2023.1.20230912
Release notes:
https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html
============================================================================================================
設定変更後
Amazon Linux 2023 repository 46 MB/s | 18 MB 00:00
Last metadata expiration check: 0:00:04 ago on Thu Sep 14 11:04:06 2023.
amazon-linux-repo-s3.noarch 2023.1.20230912-0.amzn2023 amazonlinux
bind-libs.aarch64 32:9.16.42-1.amzn2023.0.4 amazonlinux
bind-license.noarch 32:9.16.42-1.amzn2023.0.4 amazonlinux
////////// 中略 //////////
openssl.aarch64 1:3.0.8-1.amzn2023.0.7 amazonlinux
openssl-libs.aarch64 1:3.0.8-1.amzn2023.0.7 amazonlinux
sudo.aarch64 1.9.13-1.p2.amzn2023.0.4 amazonlinux
system-release.noarch 2023.1.20230912-0.amzn2023 amazonlinux
自動更新パッケージのインストールと設定
以下に記載したコマンドを一つずつ順番に実行して、インストールと設定変更、サービスの有効化を行います。
sudo dnf -y install dnf-automatic
sudo cp -p /etc/dnf/automatic.conf /etc/dnf/automatic.conf.original
sudo sed -i -e 's|apply_updates = no|apply_updates = yes|' /etc/dnf/automatic.conf
sudo systemctl start dnf-automatic.timer
sudo systemctl enable dnf-automatic.timer
途中、インラインエディタであるsedコマンドで設定ファイルの内容を書き変え、更新のダウンロードだけではなく、実際に反映までするように設定変更しています。
もし、ダウンロードだけで自動反映したくない場合は、このコマンドを実行しないでください。
自動更新が成功したか確認する
上記の設定がうまくいっていれば、パッケージが自動更新されるようになります。
実際に、自動更新処理が実行された後、パッケージの更新状況を確認すると、更新対象のパッケージがなくなっていました。
dnfの実行ログである「/var/log/dnf.log」を確認すると、以下のようにアップデートが実行されたログが出力されています。
2023-09-14T11:20:23+0900 INFO --- logging initialized ---
2023-09-14T11:20:23+0900 DDEBUG timer: config: 1 ms
2023-09-14T11:20:23+0900 DEBUG Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, release-notification, repoclosure, repodiff, repograph, repomanage, reposync, supportinfo
2023-09-14T11:20:23+0900 DEBUG Started dnf-automatic.
2023-09-14T11:20:23+0900 DEBUG Sleep for 0 seconds
////////// 中略 //////////
2023-09-14T11:20:48+0900 DDEBUG /var/cache/dnf/amazonlinux-da99582a2c32e980/packages/libtasn1-4.19.0-1.amzn2023.0.4.aarch64.rpm removed
2023-09-14T11:20:48+0900 DDEBUG /var/cache/dnf/amazonlinux-da99582a2c32e980/packages/libgomp-11.4.1-2.amzn2023.0.2.aarch64.rpm removed
2023-09-14T11:20:48+0900 DDEBUG /var/cache/dnf/amazonlinux-da99582a2c32e980/packages/openssh-server-8.7p1-8.amzn2023.0.8.aarch64.rpm removed
うん、うまく更新されているっぽいです。
参考文献
- Amazon Linux 2023のパッケージをアップデートしてみた(https://dev.classmethod.jp/articles/amazon-linux-2023-update-package/)
- DNF Command Reference(https://dnf.readthedocs.io/en/latest/command_ref.html)
- What is Amazon Linux 2023?(https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html)
- dnf-automaticを使ってパッケージの自動アップデート Rocky ,Alma, CentOS(https://rin-ka.net/dnf-automatic/)