はじめに
Amazon Linux2
のパッケージ管理に使われている yum
は終了する方向なので dnf
を導入します。設定・運用前のインスタンスでは Amazon Linux 2023
の導入も検討したほうがいいかもしれません。導入には以下の記事を参考にしましたが、 libreport-filesystem
が今回の環境では足りなかったので、備忘録として書いておきます。
設定の流れ
以下のパッケージが必要となりますが、 yum
だと見つからないので、 rpm
を取ってきてから yum
でインストールします。
- dnf-0.6.4-2.sdl7
- dnf-conf-0.6.4-2
- python-dnf-0.6.4-2
- libreport-filesystem
このあと、 yum
の変数定義を dnf
にリンクすれば完了します。
実際の操作例
パッケージのダウンロード
先ず、 wget
を使って適当なサーバーから必要な rpm
パッケージをダウンロードします。
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
wget https://centos.pkgs.org/7/centos-aarch64/libreport-filesystem-2.1.11-53.el7.centos.aarch64.rpm.html
インストール
次に、ダウンロードしたパッケージを yum
でインストールします。
sudo yum install \
python-dnf-0.6.4-2.sdl7.noarch.rpm \
dnf-0.6.4-2.sdl7.noarch.rpm \
dnf-conf-0.6.4-2.sdl7.noarch.rpm \
libreport-filesystem-2.1.11-53.el7.centos.x86_64.rpm
変数定義
これでパッケージの導入は完了ですが、 sudo dnf update
すると以下のようなエラーが出てくると思います。
Repository u'amzn2-core': Error parsing config: Error parsing "mirrorlist = u'$awsproto://$amazonlinux.$awsregion.$awsdomain/2/$product/$target/x86_64/mirror.list'": URL must be http, ftp, file or https not ""
...(中略)...
Repository u'amzn2extra-kernel-5.15': Error parsing config: Error parsing "mirrorlist = u'$awsproto://$amazonlinux.$awsregion.$awsdomain/2/extras/kernel-5.15/latest/x86_64/mirror.list'": URL must be http, ftp, file or https not ""
これは、 $awsproto
などの変数に値が代入されていないことが原因です。これらの変数値は /etc/yum/vars
に定義してあるので、 /etc/dnf/
に同様の変数を定義すれば解決します。実際には、シンボリックリンクを貼ってやればいいと思います。( yum
をアンインストールするときは注意)
sudo ln -s /etc/yum/vars /etc/dnf/
導入完了の確認
以上でパッケージの導入か終わりなので、試しにパッケージのアップデートを行います。
sudo dnf update
設定がうまくいってると、アップデートが開始されて完了するはずです。
Amazon Linux 2 core repository 72 MB/s | 68 MB 00:00
Amazon Extras repo for epel 14 kB/s | 1.3 kB 00:00
...(中略)...
完了しました!