原因
このエラーは、yum が設定されたパスで必要なリポジトリのメタデータを見つけられない場合に発生します。考えられる原因は次のとおりです。
オペレーティングシステムのサポート終了 (EOL): OS プロバイダーが、EOL バージョンの公式 yum リポジトリをアーカイブサーバー (vault) に移動したため、元のミラー URL が無効になっています。ミラーソースをアーカイブのリポジトリに切り替える必要があります。詳細については、「OS EOL の処理」をご参照ください。
環境変数内の不正な HTTP プロキシ: 不正な HTTP または HTTPS プロキシが環境変数 (たとえば、
/etc/profileファイル内) に設定されているため、yum がミラーサーバーに接続できません。詳細については、「不正な環境変数設定の確認と修正」をご参照ください。centos-releaseパッケージが見つからない: このパッケージが見つからない場合、yum は利用可能なリポジトリを見つけられません。yum は設定ファイル内の変数を解決できず、そのため不正な URL を生成します。詳細については、「centos-release パッケージのインストール」をご参照ください。
解決策
OS EOL の処理
EOL システムはセキュリティ更新プログラムを受信しなくなるため、セキュリティリスクとなります。以下の手順は一時的な回避策です。できるだけ早くオペレーティングシステムを置き換えて移行することを強く推奨します。
CentOS 6
ソース設定ファイルをバックアップします。
# Base ソース設定をバックアップします。 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # EPEL ソース設定をバックアップします。 sudo cp /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backupBase リポジトリをアーカイブミラーに切り替えます。
sudo vim /etc/yum.repos.d/CentOS-Base.repoCentOS-Base.repoファイルの内容を以下に置き換えます。[base] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6 [updates] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6 [extras] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6EPELリポジトリをアーカイブミラーに切り替えます。vim /etc/yum.repos.d/epel.repoepel.repoファイルの内容を以下に置き換えます。[epel] name=Extra Packages for Enterprise Linux 6 - $basearch enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/epel-archive/6/$basearch gpgcheck=0 gpgkey=http://mirrors.cloud.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6yum repolistコマンドを実行します。コマンドが 404 エラーなしでリポジトリをリスト表示すれば、問題は解決です。
CentOS 7
ソース設定ファイルをバックアップします。
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup新しいソース設定ファイルをダウンロードします。
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum キャッシュをクリアして再構築します。
yum clean all && yum makecacheyum repolistを実行します。コマンドが 404 エラーなしでリポジトリをリスト表示すれば、問題は解決です。
不正な環境変数設定の確認と修正
プロキシ環境変数を確認します。
echo $http_proxy echo $https_proxyプロキシ設定を削除します。
前のステップでプロキシのアドレスが返された場合は、/etc/profileファイルを編集します。export http_proxy=またはexport https_proxy=を含む行を見つけ、各行の先頭に#を追加してコメントアウトします。sudo vim /etc/profile# export http_proxy="http://your.proxy.address:port" # export https_proxy="https://your.proxy.address:port"yum repolistコマンドを実行します。コマンドが 404 エラーなしでリポジトリをリスト表示すれば、問題は解決です。
centos-release パッケージのインストール
パッケージがインストールされているか確認します。
コマンドが
package centos-release is not installedを返した場合、パッケージをインストールします。sudo rpm -q centos-releaseパッケージをダウンロードします。
公式ミラーサイトにアクセスし、最新バージョンの
centos-release-*.rpmパッケージを見つけて、そのリンクをコピーします。<URL>をコピーしたリンクに置き換えます。sudo wget <URL>たとえば、CentOS 7 の場合、
<URL>はhttps://mirrors.aliyun.com/centos/7/os/x86_64/Packages/centos-release-7-9.2009.0.el7.centos.x86_64.rpmです。パッケージをインストールします。
<file_name>をダウンロードしたパッケージのファイル名に置き換えます。sudo rpm -ivh <file_name>たとえば、CentOS 7 の場合、
<file_name>はcentos-release-7-9.2009.0.el7.centos.x86_64.rpmです。yum repolistコマンドを実行します。コマンドが 404 エラーなしでリポジトリをリスト表示すれば、問題は解決です。