CentOS Stream 8でUpdateエラー

久しぶりに仮想マシンのCentOS Stream 8を起動したらUpdateできなかった。
まぁとっくにEOLを迎えているのでしょうがないのではあるが、
せっかくの仮想マシンなのでなるべく更新された状態にしておきたい。
ということで、エラーの原因を調べてみた。


エラーの内容


Update時に出力されたエラーは以下になる。

$ sudo dnf check-update
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

CentOS Stream 8 - AppStream 40 B/s | 38 B 00:00
エラー: repo 'appstream' のメタデータのダウンロードに失敗しました : Cannot prepare internal mirrorlist: No URLs in mirrorlist


うむ、さっぱりわからん・・・。
このエラーを回避して通常通りUpdateできるようにしていきたい。


サブスクリプションマネージャの無効化


とりあえず上から見ていくと「subscription-manager で登録できます。」と言われている。
サブスクリプション・・・?

調べてみると使わないのであれば無効にしてよいらしい。
こんな古いCentOSでサブスクを使う予定もないので早速無効化する。
サブスクリプションマネージャの設定ファイルは以下になる。

/etc/yum/pluginconf.d/subscription-manager.conf


viで中身を開くとenableが有効になっているようなので、こいつを編集して無効にする。

$ sudo vi /etc/yum/pluginconf.d/subscription-manager.conf

[main]
enabled=1
enabled=0 # 1を0に書き換え

# When following option is set to 1, then all repositories defined outside redhat.repo will be disabled
# every time subscription-manager plugin is triggered by dnf or yum
disable_system_repos=0


保存して終了。


リポジトリの変更


とりあえずもう一度Updateを実行してみる。

$ sudo dnf check-update
CentOS Stream 8 - AppStream 47 B/s | 38 B 00:00
エラー: repo 'appstream' のメタデータのダウンロードに失敗しました : Cannot prepare internal mirrorlist: No URLs in mirrorlist


まだ一部エラーは解消していない。
確認してみると「No URLs in mirrorlist」とある。
サポートも切れているので、リポジトリのミラーリストも使えなくなっているようだ。

これも調べてみると「/etc/yum.repos.d」配下にある
「CentOS-*.repo」ファイルを修正してあげれば良さそう。
修正箇所は2箇所あり、以下になる。

■1つ目
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
 ↓
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
※頭に「#」を付与してコメント化する


■2つ目
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
 ↓
baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
※頭の「#」を削除して非コメント化する


■修正対象
$ ls /etc/yum.repos.d/CentOS-*
/etc/yum.repos.d/CentOS-Stream-AppStream.repo /etc/yum.repos.d/CentOS-Stream-Media.repo
/etc/yum.repos.d/CentOS-Stream-BaseOS.repo /etc/yum.repos.d/CentOS-Stream-NFV.repo
/etc/yum.repos.d/CentOS-Stream-Debuginfo.repo /etc/yum.repos.d/CentOS-Stream-PowerTools.repo
/etc/yum.repos.d/CentOS-Stream-Extras-common.repo /etc/yum.repos.d/CentOS-Stream-RealTime.repo
/etc/yum.repos.d/CentOS-Stream-Extras.repo /etc/yum.repos.d/CentOS-Stream-ResilientStorage.repo
/etc/yum.repos.d/CentOS-Stream-HighAvailability.repo /etc/yum.repos.d/CentOS-Stream-Sources.repo


1つ1つ修正していっても大した手間では無いだろうが、
sedで一気に置換したほうが楽なのでそちらを採用。
コマンドについては以下サイトを参考にさせていただいた。ありがとうございます!
参考:CentOS8でdnfコマンドを実行して「エラー: repo 'AppStream' のメタデータのダウンロードに失敗しました : Cannot prepare internal mirrorlist: No URLs in mirrorlist」が発生した場合の対処法

$ sudo sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-*
$ sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*


これで対処も完了したので、改めてUpdateしてみる。

$ sudo dnf check-update
CentOS Stream 8 - AppStream 13 MB/s | 29 MB 00:02
CentOS Stream 8 - BaseOS 13 MB/s | 10 MB 00:00
CentOS Stream 8 - Extras 42 kB/s | 18 kB 00:00
CentOS Stream 8 - Extras common packages 35 kB/s | 8.0 kB 00:00


エラーなくUpdateできるようになった。


とまぁサポート切れのCentOS Stream 8をUpdateしてみたわけだが、
セキュリティ上使わないに越したことはない。
代わりになるディストリビューションをさっさと見つけなければ。


以上。



バージョン8&9両対応!
Red Hat Enterprise Linux完全ガイド


人気記事