본문으로 건너뛰기

[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 가 엄청 느립니다 …………

참고 자료

자주 묻는 질문

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는 매우 느립니다.