RedHat Enterprise Linux (RHEL)の基本として、dnfオプションで「–releasever=8.4」というような形でバージョン指定すると固定できる、という手法がある。
そして、設定ファイルとして設定する場合は /etc/yum/vars/releasever というファイルに「8.4」と書くことで反映され、dnfを実行する際にでオプション指定する必要がなくなる。
しかし、AlmaLinux, RockyLinuxともこの設定を行ってもうまくいかないように見える。
これは /etc/yum.repos.d/ の各レポジトリ設定にある情報取得元が「mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/~」というような指定になっていますが、このURLには最新バージョンのものしか残っていないため発生している。
この「mirrorlist=~」のほうを「#mirror=~」と行頭に#を入れてコメントとする。
そして標準ではコメントとなっている「# baseurl=https://repo.almalinux.org/almalinux/$releasever/~」となっている記述のほうの# を削除し、その後ろにあるURLを修正することで対処する。
どう書き換えるかについてはAlmaLinuxとRockyLinuxでそれぞれ異なる。
AlmaLinux の場合
AlmaLinux のレポジトリ https://repo.almalinux.org/almalinux/ を見に行くと 2022/07/14時点では「8.6」「8」「9.0」「9」のディレクトリしかなく古いバージョンのディレクトリはない。
(2023/09/15時点だと古いバージョンのディレクトリはあるものの中身は入っていない)
じゃあ古いバージョンはどこにあるかといえば https://repo.almalinux.org/vault/ にある
なので、 /etc/yum.repos.d/ の各設定にあるURLを「https://repo.almalinux.org/almalinux/~」から「https://repo.almalinux.org/vault/~」に書き換えればよい、ということになる。
RockyLinuxの場合
RockyLinux のレポジトリ https://download.rockylinux.org/pub/rocky/ を見に行くと 2022/07/14時点では「8.4」「8.5」「8.6」「8」「9.0」「9」とディレクトリがあるが、8.4,8.5のディレクトリ内にはreadme.txt があり https://dl.rockylinux.org/vault/rocky/ に案内される。
というわけで、/etc/yum.repos.d/ に書き換えは「https://download.rockylinux.org/pub/rocky/~」から「https://dl.rockylinux.org/vault/rocky/~」に書き換えることになる。
Oracle Linuxの場合
非サポート契約者で固定する方法はなさそう。
ISOファイルを読み込む、という手法で固定する場合は「Oracle Linux 8でリリースバージョン固定する方法」参照のこと。
Cent OSの場合
CentOSの古いレポジトリは https://vault.centos.org/centos/ となる
CentOS 7.xの場合は、各バージョンで提供されているアップデートも適用できる。
CentOS 8.xでは各バージョンの提供開始時のパッケージで固定される。kernelだけは各バージョンに相当する最新パッチも適用できる?
2023/03/06 追記
EPELレポジトリ使用時の注意点
EPELレポジトリの$releasever は基本的に「9」「8」「7」とメジャーバージョン部分だけの構成なようです。
このため、/etc/yum/vars/releaseverで「9.0」という感じでバージョン固定してしまうと、EPELレポジトリ検索の際も「9.0」として実施しますが、EPELレポジトリには小数点以下のディレクトリがないためエラーとなってしまいます。
このため、たとえばepelレポジトリの構成ファイルにある「$releasever」を直接数字の「9」に置き換えてしまう、といった対処が必要となります。