
・CentOS 8 でyumが動かないのなぜ?
・”エラー: repo ‘AppStream’ のメタデータのダウンロードに失敗しました”が表示される。
・エラーの回避方法を知りたい
・CentOS 8 はもうサポートされない?
・サポートされているCentOSのバージョンは?
こういった疑問に答えます。
CentOS 8 のyumで “エラー: repo ‘AppStream’ のメタデータのダウンロードに失敗しました”が発生!原因と対処法は?
先日必要があってCentOS 8 をインストールし、いつも通りyumでパッケージの更新を行ったところタイトルの通りエラーが表示されました。
# yum info
CentOS Linux 8 - AppStream 89 B/s | 38 B 00:00
エラー: repo 'appstream' のメタデータのダウンロードに失敗しました : Cannot prepare internal mirrorlist: No URLs in mirrorlist
さて原因は何だろう考えたところ、以前こちらで『CentOS Linux 8 ディストリビューションのアップデートは、2021年12月31日まで継続』と紹介していた通りで、CentOS 8 のアップデートが完了してることが原因でした。
とはいえ、「まだまだCentOS 8 を使いたい!」「使えないと困る」という方は多くいらっしゃると思います。
ということで、今回はCentOS 8 のアップデートを可能にするための設定方法ご紹介します。
リポジトリの設定箇所は2か所
では、早速設定しますが、編集作業はviで行います。
viの使い方はこちらでご紹介していますので、参考にしてみてください。
なお、アップストリーム(AppStream)はRHEL/CentOS8で発表された新しい概念で、ソフトウェアはBaseOSもしくはAppStreamで配信されます(されました)。

ただし、前述の通り既にアップストリームは2021年12月末で終了しているため、エラー回避のためには、以下のリポジトリを変更する必要があります。
エラーがAppstreamなので「Appstreamだけを修正すればエラーの回避が出来るのでは?」と考えがちですが、エラー回避にはBaseOS.repoの修正も必要です。
実際、Appstreamだけを修正してyumコマンドを実行しても今度はbaseosのエラーが出ます。
# yum info
CentOS-8 - AppStream 1.2 MB/s | 8.4 MB 00:06
CentOS Linux 8 - BaseOS 126 B/s | 38 B 00:00
エラー: repo 'baseos' のメタデータのダウンロードに失敗しました : Cannot prepare internal mirrorlist: No URLs in mirrorlist
ということで、BaseOSとAppstreamの両ファイルを修正します。
CentOS-Linux-AppStream.repoの編集
ここでは、CentOS-Linux-AppStream.repoの設定を行います。
# vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo
CentOS-Linux-AppStream.repoの[AppStream]以下部分を以下の内容に変更します。
もっとも簡単な方法は[AppStream]以下をコメントアウトするか、削除して以下を追加しましょう。
[AppStream]
name=CentOS-$releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
以上でCentOS-Linux-AppStream.repoの編集は完了です。
CentOS-Linux-BaseOS.repoの編集
次にBaseOS.repoの設定を行います。
# vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
[BaseOS]以下に設定されている部分を変更します。
設定方法はCentOS-Linux-AppStream.repoと同様で、[BaseOS]以下をコメントアウトするか、削除して以下を追加しましょう。
[BaseOS]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
BaseOS.repoの設定は以上で完了です。
BaseOSとAppstreamの修正後に yum info を実行してみましょう。
yumコマンドでエラーが発生しないことを確認できるはずです。
RHELのクローンOSとしてのCentOS7はサポートが有効
CentOSをダウンロードすべくサイトにアクセスするとCentOS 8 は既にダウンロードできません。
一方で、CentOS 7 はダウンロードでき、yumコマンド実行時にエラーになりません。
しかも、End-of-life(EOL)はサイトにある通り”Jun 30th, 2024(2024年6月30日)”なので、もうしばらく利用できそうです。
RHELのクローンとしてのCentOSを利用したいのであれば、当面の間はCentOS 7 を利用するのは一つの選択かもしれません。
まとめ
今回は先日ハマったCentOS 8 でyumが利用できない場合の回避方法を寄稿しました。
まだまだCentOS 8 を利用しなければならないケースもあるかと思いますので、トラブル回避の参考にしてみてください。
また、本ブログではLinuxを含めてITエンジニア向けの小技をご紹介していますので、こちらも是非ご覧ください。
