개요
Ncloud (네이버 클라우드)에서 XEN Hypervisor 타입의 록키 리눅스(Rocky Linux) 8.6 서버를 제공하고 있는데, 패키지를 설치할 때 간혹 패키지 다운로드 사이트 또는 미러 사이트에서 8.6 버전에 대한 패키지 정보를 찾을 수 없다는 메시지가 나타나면서 패키지를 설치할 수 없는 경우가 있습니다.
그렇다면 왜 이런 문제가 생기는지와 어떻게 하면 해결할 수 있는지를 정리해보겠습니다.
오류 상황
테스트로 아파치를 설치해보려고 했는데, 오류 메시지가 나타나면서 설치를 할 수 없었습니다. 또한 리포지토리 미러 사이트도 Ncloud 내부 서버가 아닌 록키 리눅스 공식 미러 사이트로 연결하려고 시도한 것을 확인할 수 있습니다.
~# dnf -y install httpd
Rocky Linux 8.6 - Extras 5.4 kB/s | 20 kB 00:03
Errors during downloading metadata for repository 'extras':
- Status code: 404 for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=extras-8.6 (IP: 151.101.26.132)
- Status code: 404 for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=extras-8.6 (IP: 146.75.94.132)
Error: Failed to download metadata for repo 'extras': Cannot prepare internal mirrorlist: Status code: 404 for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=extras-8.6 (IP: 151.101.26.132)
미러 사이트 확인
오류 메시지에 나온 공식 미리 사이트에 접속해보니 [AppStream], [extras] 등 모든 8.6 버전에 대한 정보가 사라진 것을 확인할 수 있었습니다.
오류 상황 요약 정리
현재 확인되는 오류 상황을 정리해보면 다음과 같습니다.
- 패키지를 검색하는 저장소가 [AppStream] 이나 [BaseOS]가 아닌 [Extras]로 변경되어 있다.
- 리포지토리 미러 사이트를 Ncloud 내부 서버가 아닌 외부에 있는 록키 리눅스 공식 미러 사이트로 접속시도 하고 있다.
- 외부에 있는 록키 리눅스 공식 미러 사이트에서는 공식 지원이 종료되는 8.6 버전에 대한 데이터가 이미 삭제되어 있다.
원인 분석
원인 분석을 하기 위해 서버의 리포지토리 설정을 확인해보겠습니다.
리포지토리 설정 - 오류 서버
[/etc/yum.repos.d/] 디렉토리에 있는 리포지토리 설정 파일을 확인해보면 아래와 같이 다수의 파일이 존재하는 것을 확인할 수 있습니다.
~# ls -al /etc/yum.repos.d/
- 위에서 확인한 설정 파일들 중에서 [Rocky-Extras.repo] 파일을 열어서 미러 사이트 주소를 확인해보면, Ncloud 내부 서버가 아닌 아래와 같이 록키 리눅스 공식 사이트로 설정되어 있는 것을 알 수 있습니다.
~# vi /etc/yum.repos.d/Rocky-Extras.repo
리포지토리 설정 - 정상 서버
그렇다면 아무 문제 없는 정상적인 서버의 경우는 어떤지 비교해서 살펴보겠습니다.
마찬가지로 [/etc/yum.repos.d/] 디렉토리에 있는 리포지토리 설정 파일을 확인해보면 오류가 발생한 서버와 달리 아래와 같이 [Rocky-AppStream.repo], [Rocky-BaseOS.repo] 이렇게 2가지 파일만 존재하는 것을 확인할 수 있습니다.
~# ls -al /etc/yum.repos.d/
- 또한 2가지 설정 파일들 중에서 [Rocky-AppStream.repo] 파일을 열어서 미러 사이트 주소를 확인해보면, 록키 리눅스 공식 사이트는 주석 처리가 되어 있고, [baseurl]이 [repo.ncloud.com] 이라는 Ncloud 내부 서버로 설정되어 있는 것을 알 수 있습니다.
원인 추적
오류가 발생한 서버와 정상적인 서버의 차이점을 비교 추적해보니 오류가 발생한 서버에서는 서버 생성 후에 패키지 업데이트
가 진행된 것을 알 수 있었습니다.
서버 생성 후에 설치된 패키지들의 업데이트를 적용하기 위해 [dnf upgrade]를 실행했고, 그에 따라 리포지토리 정보가 변경되었다는 것을 알 수 있었습니다.
~# dnf -y upgrade
~# man dnf
#--- 중략 ---#
Upgrade Command
Command: upgrade
Aliases: up
Deprecated aliases: update, upgrade-to, update-to, localupdate
해결 방법
이 문제를 해결하는 방법은 몇가지가 있는데 차례대로 정리해보겠습니다.
방법-1
첫번째 방법은 [Rocky-Extras.repo] 리포지토리 설정파일의 주소를 Ncloud 내부 서버로 변경하는 방법입니다.
# Rocky-Extras.repo
#mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever
baseurl=http://repo.ncloud.com/rocky/$releasever/extras/$basearch/os/
- 주소 변경 후에 아파치를 설치해보면 문제 없이 잘 설치 되는 것을 확인할 수 있습니다.
방법-2
두번째 방법은 패키지를 설치할 때 미러 사이트 주소가 변경된 [Extras] 저장소를 비활성화하는 옵션을 적용하는 방법입니다.
~# dnf -y install httpd --disablerepo=extras
사전 예방책
위 방법들은 패키지 업데이트 후에 문제를 해결하는 방법이므로, 사전에 이런 문제가 생기지 않도록 하는 것도 선택지 중의 하나입니다. 가능한 방법은 다음 2가지 입니다.
- 패키지 업데이트를 진행하지 않는 방법
- 보안-버그 수정 사항만 최소한으로 업데이트 하는 방법
패키지 최소 업데이트
보안-버그 수정 사항만 최소한으로 업데이트 하는 [upgrade-minimal] 옵션으로 업데이트를 했을 경우에는 아래와 같이 리포지토리 파일에 변화가 없어서 이후 패키지 설치에 오류가 생기지 않습니다.
~# dnf -y upgrade-minimal
참고 URL
- Rocky Linux 서버 소개
- Rocky Linux 미러 사이트 리스트
- Ncloud KVM Hypervisor 타입의 Rocky Linux 서버 Repository 미러 사이트 오류 문제 해결 방법
문서 업데이트 내역
날짜 | 내용 |
---|---|
2023-06-29 | 문서 최초 생성 |