CentOS8 dnf/yum に失敗する「Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist」

Linux

<景品表示法に基づく表記> 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。

CentOS8 でパッケージのバージョンアップをしようとしたらエラーになってしまいました。

  • dnf / yum コマンドが実行できない
  • RPMパッケージをアップデートしたい
  • エラーの回避方法をしりたい

CentOS8 は突然の方針転換によって2021年にサポートが終了しました。私はサポートが切れでも使い続ける必要があるので粘って使い続けます。

公開されている最新パッケージを適応するための手順を解説します。いつまで利用できるかは不明ですがお困りの方は参考にしてください。

dnf / yum コマンドでエラーが出力される

RPMパッケージのアップデートができない

放置していたサーバーをアップデートしようとするとエラーが出るようになり、dnf / yum コマンドが正常に動作しなくなりました。

# dnf update
CentOS Linux 8 - AppStream                      104  B/s |  38  B     00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

CentOS 4 時代から触っているので、放置し過ぎて動かなくなることは何度も経験済みです。なんとなく解決できるだろうとおもっています。

原因はミラーサイトが停止したこと

長い間、RHEL系のディストリビューションを利用しているので何となく理由は分かります。リポジトリのサーバーが死んだので、接続できないのが理由だろうと察しがつきます。

リポジトリのサーバーが死んだ

リポジトリの接続先を変更することで、dnf / yum コマンドを実行できるようになります。

リポジトリの接続先を変更する(暫定対応)

規定のミラーサイトからvaultミラーサイトに変更

リポジトリが参照しているミラーサイト mirrorlist.centos.orgvault.centos.org に変更することで解決できます。設定ファイルを変更してください。

ミラーサイトには、変更を促すアラートが記載されていました。

This directory tree contains current CentOS Linux and Stream releases. (7 and 8-stream)
For CentOS Stream 9 (including src.rpm and debuginfo packages), see CentOS Stream mirror.
For archived content, see Vault mirror.
For debuginfo packages, see Debuginfo mirror

接続先が mirrorlist.centos.org になっている設定ファイルを変更しますが、複数ファイルを修正することになります。通常は2つを変更すれば、ほぼ利用できるようになります。

  • /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
  • /etc/yum.repos.d/CentOS-Linux-AppStream.repo

ダメであれば、他の CentOS-Linux-***.repo を修正してください。

CentOS-Linux-BaseOS.repo

リポジトリが参照しているミラーサイト mirrorlist.centos.org を vault.centos.org に変更します。

[baseos]

## mirrorlist をコメントアウト
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra

## baseurl を変更して有効化
baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/

CentOS-Linux-AppStream.repo

リポジトリが参照しているミラーサイト mirrorlist.centos.org を vault.centos.org に変更します。

[appstream]

## mirrorlist をコメントアウト
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra

## baseurl を変更して有効化
baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/

これで修正は完了です。

dnf / yum コマンドを実行してください。

CentOS Stream を利用する(恒久対応)

CentOS8 は2021年にサポートが切れてしまいました。利用し続けたい場合はリポジトリをCentOS Streamに変更すれば使い続けることは可能です。

関連記事  CentOS 8 でCentOS Streamのリポジトリを利用できるように設定する

注意する点として、ディストリビューションの位置づけが変わります。DownStreamのCentOSが終了しUpStreamのCentOS Stream活動を続けます。

位置づけが変わっても普段利用している環境であれば影響は少ないので変更することも検討してください。

関連記事 dnf-automaticを使ってパッケージの自動アップデート Rocky ,Alma, CentOS