20
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

古い CentOS で YumRepo Error が出た時の対処法

Last updated at Posted at 2021-01-22

古い CentOS で yum upgrade などを実行した際、YumRepo Error: ... (略) ... Cannot find a valid baseurl for repo: base のようなエラーが発生してしまった場合の対処法です。

ググれば情報はたくさん見つかるのですが、色んな情報が錯綜していて分かりにくかったため、改めてまとめておきます。

記事は CentOS 6.10 を対象に書いていますが、他のバージョンでも応用が効くと思います。


エラー内容

Google 等から検索してくる人のために、エラー文を長めにコピペしておきます。

$ yum upgrade

YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base

原因

Yum リポジトリの設定で、[base] に書かれたデータ取得先 URL がおかしいよ…と教えてくれています。

CentOS 6 系 は 2020年11月30日にサポートが終了されたため、デフォルトの設定が使えなくなってしまったわけです。


対応

上記から適切な URL を探し、設定しなおせば良いです。

なお、この手の URL で vault というサブドメインが付いていたら、サポートが終わったデータのスナップショットを保管している場所…みたいな意味になります。

例えば、私の大好きなゲーム Fallout シリーズに登場する地下核シェルターに Vault○○ という名前が付いていたり、地下にあるワイン貯蔵庫の事を Wine Vault と呼んだりもしますね。


具体的な修正方法

Yum リポジトリの設定は、/etc/yum.repos.d/ 以下にあります。

[base] の URL は CentOS-Base.repo というファイルに記述されていますので、元の URL を # でコメントアウトし、適切な URL を追記します。

$ vi /etc/yum.repos.d/CentOS-Base.repo

[base]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/

補足

なお、$releasever$basearch といった変数の意味については、yum info centos-release の結果を見るのが手っ取り早いです。

$ yum info centos-release

Name        : centos-release
Arch        : x86_64
Version     : 6
From repo   : base

より詳細は、適当な Red Hat 系のドキュメントを参考にしてください。

つまり、修正後の http://vault.centos.org/centos/$releasever/os/$basearch/ は、私の環境であれば http://vault.centos.org/centos/6/os/x86_64/ と同じ意味になり、アクセスすると実際にデータ存在する事が分かります。

逆に、修正前の http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra は、私の環境であれば http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock と同じ意味になり、アクセスすると無効である事が分かります。


修正内容まとめ

修正後にもう一度コマンドを実行すると、今度は Error: Cannot find a valid baseurl for repo: updates といったエラー内容に変化すると思います。

この場合、[updates] の URL もおかしいという事になりますが、1 つ 1 つ確認&修正するのは手間だと思いますので、まとめて書いておきます。

$ vi /etc/yum.repos.d/CentOS-Base.repo

[base]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/

[updates]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/

[extras]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/

[centosplus]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/

[contrib]
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
baseurl=http://vault.centos.org/centos/$releasever/contrib/$basearch/

追加の修正

もし、上記の修正を行ってもなお Error: Cannot find a valid baseurl for repo: centos-sclo-rh といったエラーが出る際は、[centos-sclo-rh] の記述があるファイルを探して同様に修正します。

$ vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo

[centos-sclo-rh]
# baseurl=http://mirror.centos.org/centos/6/sclo/$basearch/rh/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=6&repo=sclo-rh
baseurl=http://vault.centos.org/centos/$releasever/sclo/$basearch/rh/

Error: Cannot find a valid baseurl for repo: centos-sclo-sclo というエラーであれば、[centos-sclo-sclo] の記述があるファイルを探して同様に修正します。

$ vi /etc/yum.repos.d/CentOS-SCLo-scl.repo

[centos-sclo-sclo]
# baseurl=http://mirror.centos.org/centos/6/sclo/$basearch/sclo/
# mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=6&repo=sclo-sclo
baseurl=http://vault.centos.org/centos/$releasever/sclo/$basearch/sclo/

エラーが出なくなるまで修正すれば OK です。

20
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?