[Linux] `YumRepo Error: All mirror URLs are not using ftp, http[s] or file.`
해결 방법 (CentOS 6)
요약
- CentOS 6의
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.은 2020-11-30 EOL로 미러에서 패키지가 제거되어 발생합니다. mirrorlist.txt에 vault.centos.org 주소를 넣으면 임시로 해결되지만yum clean all후에는 다시 발생합니다.CentOS-Base.repo의 mirrorlist를 주석 처리하고 baseurl을https://vault.centos.org로 바꾸면 영구적으로 해결됩니다.
테스트 환경 CentOS 6.10
YumRepo Error: All mirror URLs are not using ftp, http[s] or file. 해결 방법
아래와 같이 CentOS 6에서 발생되는 이슈입니다.
[root@fastvm-centos-6-10-51 ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
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
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/extras/mirrorlist.txt
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/updates/mirrorlist.txt
repo id repo name status
base CentOS-6 - Base 0
extras CentOS-6 - Extras 0
updates CentOS-6 - Updates 0
repolist: 0
발생되는 이유는 CentOS 6 의 EOL 이 2020-11-30 로 인해 fastmirror site 에서 CentOS 6 Package가 제거 되어서 그렇습니다.
해결 방법(임시)
아래와 같이 mirrorlist.txt 에 CentOS Vault Repository 를 추가합니다.
$ echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
$ echo "https://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
$ echo "https://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt
추가 이후에 아래와 같이 yum repolist 가 정상 작동 되는 것을 볼 수 있습니다.
[root@fastvm-centos-6-10-51 ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.7 kB 00:00
base/primary_db | 4.7 MB 00:03
extras | 3.4 kB 00:00
extras/primary_db | 29 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 12 MB 00:07
repo id repo name status
base CentOS-6 - Base 6,713
extras CentOS-6 - Extras 47
updates CentOS-6 - Updates 1,193
repolist: 7,953
위와 같이 적용하면 yum clean all 명령어가 수행이 되면 다시 동일한 문제가 발생 될 것입니다.
해결 방법(영구)
아래와 같이 /etc/yum.repos.d/ 하위의 repo 파일을 수정합니다.
$ sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
$ sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=https:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
아래와 같이 repo 가 수정됩니다.
$ diff CentOS-Base.repo.old CentOS-Base.repo
15,16c15,16
< mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
< #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
---
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
> baseurl=https://vault.centos.org/centos/$releasever/os/$basearch/
23,24c23,24
< mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
< #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
---
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
> baseurl=https://vault.centos.org/centos/$releasever/updates/$basearch/
31,32c31,32
< mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
< #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
---
> #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
> baseurl=https://vault.centos.org/centos/$releasever/extras/$basearch/
아래와 같이 yum cache 가 clean 되어도 mirror site 정보가 유지 됩니다.
[root@fastvm-centos-6-10-51 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up Everything
[root@fastvm-centos-6-10-51 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.7 kB 00:00
base/primary_db | 4.7 MB 00:03
extras | 3.4 kB 00:00
extras/primary_db | 29 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 12 MB 00:07
repo id repo name status
base CentOS-6 - Base 6,713
extras CentOS-6 - Extras 47
updates CentOS-6 - Updates 1,193
repolist: 7,953
[root@fastvm-centos-6-10-51 yum.repos.d]#
결론
Vault 가 엄청 느립니다 …………
참고 자료
- https://www.reddit.com/r/sysadmin/comments/k63mcw/centos_repositories_down/
- https://qiita.com/imunew/items/3810a41960f40db85c94
- https://forum.directadmin.com/threads/how-do-i-fix-these-yum-errors.54874/
자주 묻는 질문
CentOS 6에서 `YumRepo Error: All mirror URLs are not using ftp, http[s] or file.`이 나는 이유는 무엇인가요?
CentOS 6이 2020-11-30에 EOL되면서 미러 사이트에서 CentOS 6 패키지가 제거되었기 때문입니다.
yum clean all 이후에도 CentOS 6 저장소를 계속 쓰려면 어떻게 하나요?
/etc/yum.repos.d/CentOS-Base.repo에서 mirrorlist= 줄을 주석 처리하고, 주석 처리된 #baseurl=http://mirror.centos.org 줄을 baseurl=https://vault.centos.org로 바꿉니다. 본문에 이를 위한 sed 명령이 정리되어 있습니다.
임시 해결 방법은 무엇인가요?
/var/cache/yum/x86_64/6/base/mirrorlist.txt 등 base, extras, updates의 mirrorlist.txt에 https://vault.centos.org/6.10/os/x86_64/ 같은 Vault 주소를 넣는 방법입니다. 다만 yum clean all을 실행하면 다시 같은 문제가 발생합니다.
CentOS Vault 저장소로 바꾸면 속도는 어떤가요?
본문 기준으로 Vault는 매우 느립니다.