trouble_shooting

[Linux] apt-get update 오류 ( Hash Sum mismatch ... Some index files failed to download. ... )

walwal_ 2025. 10. 8. 17:32

 

상황 

 

패키지 설치를 위해 apt-get 을 했는데 다음과 같은 오류가 발생.

 

 

gpt 가 그러는데,

 

우분투 패키지 관리자(APT)로 패키지 목록을 다운로드할 때, 압축된 인덱스 파일의 해시값이 서버와 맞는지 검증한다고 한다.

이때 문제가 있으면 에러 로그가 발생한다 함.

 

문제 상황

1. 이전 업데이트에서 캐시 파일이 손상되어 있는 경우

> /ver/lib/apt/lists/ 아래 압축된 인덱스 손상

 

2. 서버의 패키지 메타데이터 갱신 중 압축 파일과 인덱스가 맞지 않을 때

 

3. APT 가 여러 파일 형태(xz, gzip 등)로 압축을 시도하다 꼬이는 경우

> 압축 타입이 달라져도 캐시에 남은 해시값을 사용했기 때문

 

 


 

해결

구글링 해본 결과, 많은 분들이 해당 글을 참고해 해결 중이었음.

 

https://stackoverflow.com/questions/64120030/hash-sum-mismatch-when-apt-get-update-ubuntu-20-04-vm-with-multipass

 

Hash sum mismatch when apt-get update Ubuntu 20.04 VM with Multipass

My issue is the following: I start a new multipass VM which is Ubuntu 20.04 version (I do not specify it, just launch). First command in my new VM is: sudo apt-get update Where I already have some ...

stackoverflow.com

 

 

솔루션 1. 

내 경우엔 이 방법으로 해결함.

# 기존 캐시 모두 삭제
sudo rm -rf /var/lib/apt/lists/*

# 파일 형식을 gzip 으로 강제 함 (불일치를 피하기 위함)
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

# apt-get 으로 새롭게 업데이트 및 업그레이드 
sudo apt-get update && sudo apt-get upgrade


파일 형식을 강제하고, 불일치를 피하는 명령어가 있었기 때문에 내 문제가 해결된 듯..? 

 

 

솔루션 2.

# 캐시 삭제
sudo rm -rvf /var/lib/apt/lists/*


# /etc/apt/apt.conf.d/70debconf 에 APT 처리 캐시 한도에 대한 설정을 추가
# 한도를 100MB로 설정. (기본값 16MB)
echo "APT::Cache-Limit "100000000";" >> /etc/apt/apt.conf.d/70debconf

 

패키지 목록 처리 시 캐시 처리, 크기에 대한 메시지가 뜬다면 해당 명령어 시도해 보기

 

  

솔루션 3.

# 캐시 삭제
sudo rm -rvf /var/lib/apt/lists/* 

# 현재 시스템이 참고중인 status를 status-bad 라는 임시 파일을 만들어 백업
&& sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad 

# 시스템이 임시 백업해둔 status-old 의 파일을 status 로 복제
&& sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status 

# 업데이트 
&& sudo apt-get update

 

현재 시스템 상태를 사용하지 않고 정리, 이전 정상 상태를 복제해 업데이트함. 

 

 

솔루션 4.

# 불필요한 패키지 캐시 삭제 && 불필요한 의존 패키지 삭제 && 업데이트
sudo apt-get autoclean && sudo apt-get autoremove -y && sudo apt-get update

## 불필요 == 오래된

 

 

솔루션 5.

# 캐시 삭제
sudo rm -rf /var/lib/apt/lists

# 모든 .deb 파일 삭제
sudo apt-get clean

sudo apt-get update

.deb 까지 삭제 시도함으로써 용량 확보 기대 가능.

 

 

서명키 추가

# sudo apt-key adv 			: 키 관리 명령어 (ubuntu 22.04 부터 는 apt-key 대신 sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/ 또는 signed-by를 권장한다 함.)
# --keyserver keyserver.ubuntu.com 	: 키를 가져올 서버 지정
# --recv-keys 16126D3A3E5C1192 		: 특정 공개 키 ID
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192

 

APT 저장소의 서명 키를 가져오는 명령어.

.deb (저장소 패키지)가 공식 서명으로 안전하게 배포되었는지 확인.

 

 


결론 

 

여태까지 apt-get 시 오류가 났던 적 없어서 깊게 살펴볼 생각 하지 않았었슨.

덕분에 apt-get 로그도 살펴봤다.

또 오류가 난다면 상황에 맞는 명령어로 해결봐주겠슨~~~