Mirrorlistエラー:CentOS 7が正式に「引退」した日
CentOS 7のVPSを管理しているエンジニアの皆さんなら、最近かなりのストレスを感じているはずです。yum updateやyum installを実行するたびに、画面にエラーメッセージが表示されます:“Could not retrieve mirrorlist http://mirrorlist.centos.org…”。
2024年6月30日は、CentOS 7が正式にEOL(End of Life)を迎えた節目です。公式のミラーサーバー(mirror)はすべて削除されました。これにより、パッケージ管理ツールであるyumが完全に迷子になってしまいました。このエラーを解決しない限り、vimやwget、gitといった基本的なツールすらインストールできません。
実は7月に、お客様のWebサーバーがフリーズした案件を対応しました。サーバーへのPingは通り、ネットワークも安定していましたが、どうしてもNginxがインストールできませんでした。調査したところ、すべてのrepoファイルが既に「死んでいる」mirrorlistを指していました。この解決策を10台以上のサーバーに適用したところ、すべて即座に正常稼働に戻りました。
なぜシステムでエラーが発生するのか?
以前は、mirrorlistスクリプトが近くのサーバーを自動的に探してパッケージをダウンロードしていました。プロジェクトの終了に伴い、CentOSチームはすべての古いパッケージを**Vault**(vault.centos.org)というアーカイブ保管庫に移動しました。
Vaultを古い物置のようなものだと想像してください。ソフトウェアはそこに存在し続けていますが、セキュリティパッチなどの更新は行われません。困ったことに、手元のマシンの設定ファイルはこの保管庫を自動的に参照してくれません。使い続けるには、yumがVaultを見つけられるように手動で「道案内」をする必要があります。
CentOS 7のリポジトリをVaultに切り替える3ステップ
以下は、システム上のパッケージ管理ツールを復活させるための迅速な処理手順です。
ステップ1:念のため古い設定をバックアップする
システムに変更を加える前に、私は常にバックアップを優先します。万が一sedコマンドを打ち間違えても、最初からやり直せるようにするためです。
mkdir /etc/yum.repos.d/backup
cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
ステップ2:sedコマンドでリポジトリをVaultに向ける
viで一つずつファイルを修正するのは非常に時間がかかるため、私はいつもsedコマンドを使って一括置換します。mirrorlistを無効化し、baseurlをvault.centos.orgサーバーに向ける必要があります。
以下のコマンドをroot権限で順番に実行してください:
# 旧mirrorlistを無効化
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo
# baseurlをvaultのアドレスに変更
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
インストール環境によってはhttpsプロトコルを使用していたり、設定が異なっていたりする場合があります。上記のコマンドで効果がない場合は、こちらの汎用的なコマンドを試してください:
sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/CentOS-*.repo
ステップ3:キャッシュのクリアと確認
最後に、yumがVaultの新しいパスを認識できるように、古いキャッシュを完全に削除します。
yum clean all
yum makecache
画面に “Metadata Cache Created” と表示されれば成功です。これで、好きなパッケージをインストールして結果を確認してみてください。
EPELリポジトリのエラー対処も忘れずに
拡張パッケージを利用するために**EPEL**リポジトリを追加している方も多いでしょう。メインリポジトリと同様に、CentOS 7用のEPELもアーカイブ(archive)へ移動されています。
EPELのエラーを修正するには、以下のコマンドを実行します:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel*.repo
sed -i 's|#baseurl=https://download.fedoraproject.org/pub/epel/|baseurl=https://archives.fedoraproject.org/pub/archive/epel/|g' /etc/yum.repos.d/epel*.repo
アドバイス:そろそろ「乗り換え」を検討する時期です
リポジトリをVaultに向けるのは、あくまで旧システムを維持するための応急処置に過ぎません。運用上の観点から、重要なプロジェクトでCentOS 7を使い続けることはお勧めしません。
- セキュリティリスク: パッチが提供されなくなるため、新しい脆弱性に対してサーバーが無防備になります。
- ソフトウェアの陳腐化: PHP 8.xや最新のMySQLなどは、徐々にこのOSのサポートを打ち切ります。
- クラウドでの廃止: AWSやGoogle Cloudなどの大手プロバイダーも、カタログからCentOS 7のテンプレートを順次削除しています。
最善のルートは、AlmaLinux 9またはRocky Linux 9への移行です。これら2つのOSはRHEL(Red Hat Enterprise Linux)と1:1の互換性があり、コードや運用スクリプトの移行を最もスムーズに行うことができます。
まとめ
Mirrorlistエラーは、実のところCentOS 7がその使命を終えたことを知らせる通知に過ぎません。vault.centos.orgに切り替えることで、一時的にソフトウェアを通常通りインストールできるようになります。しかし、この猶予期間を利用して、長期的な安全性を確保するためにシステムのアップグレード計画を立てるようにしましょう。

