Skip to content

CentOS 8の「Failed to download metadata for repo 'appstream'」エラー解決方法

問題の概要

CentOS 8でyumコマンドを使用してパッケージをインストールしようとすると、以下のエラーが発生することがあります:

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

このエラーはDocker環境、AWS EC2インスタンス、WSL(Windows Subsystem for Linux)など、様々な環境で発生します。

原因

重要

このエラーの根本的な原因は、CentOS 8が2021年12月31日でサポート終了(EOL) となったことにあります。公式ミラーサイトのURLが変更され、従来のリポジトリが利用できなくなったため、パッケージのダウンロードやメタデータの取得に失敗します。

解決方法

方法1: リポジトリURLの修正(一時的な解決策)

最も一般的な解決方法は、リポジトリ設定ファイルを修正して、アーカイブされたミラーサイトを指すように変更することです。

sh
# リポジトリ設定ファイルがあるディレクトリに移動
cd /etc/yum.repos.d/

# mirrorlistの行をコメントアウト
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

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

# 更新を実行
sudo yum update -y
dockerfile
FROM centos

# リポジトリ設定を修正
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

# 必要なパッケージをインストール
RUN yum -y install java

CMD /bin/bash

方法2: CentOS Streamへの移行(推奨)

CentOS公式が推奨する方法は、CentOS Linux 8からCentOS Stream 8に移行することです。

sh
# CentOS Streamリポジトリに切り替え
dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos

# パッケージの同期
dnf distro-sync
sh
# GPGキーの取得(必要な場合)
wget 'http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-3.el8.noarch.rpm'
sudo rpm -i 'centos-gpg-keys-8-3.el8.noarch.rpm'

# リポジトリの切り替え
dnf --disablerepo '*' --enablerepo=extras swap centos-linux-repos centos-stream-repos

# パッケージのアップグレード
sudo dnf distro-sync

メリット

  • 公式サポートを受けることができる
  • 最新のセキュリティアップデートが適用される
  • 将来の互換性が確保される

方法3: リポジトリの無効化(特定の場合)

特定のリポジトリのみを使用したい場合、他のリポジトリを無効化することもできます。

sh
# 特定のリポジトリのみを有効化してパッケージインストール
dnf --disablerepo=* --enablerepo=base,extras,updates install [パッケージ名]

選択ガイド

方法使用場面長所短所
リポジトリURL修正緊急の対応、短期間の利用簡単で迅速に対応可能長期的なサポートなし
CentOS Stream移行長期的な利用、本番環境公式サポート、継続的な更新移行作業が必要
リポジトリ無効化最小限のパッケージのみ必要シンプルな解決策機能が制限される

注意点

重要

  • リポジトリURLを変更する方法は一時的な解決策であり、セキュリティアップデートが提供されません
  • 本番環境では、CentOS Streamへの移行や他のRHEL互換ディストリビューション(Rocky Linux、AlmaLinuxなど)への移行を検討してください

まとめ

CentOS 8のリポジトリエラーはサポート終了による必然的な問題です。短期間的にはリポジトリURLの修正で対応可能ですが、長期的にはCentOS Streamへの移行または他のサポートされているディストリビューションへの移行を強く推奨します。

どの方法を選択する場合も、システムの要件とセキュリティニーズを慎重に評価してください。