본문 바로가기

리눅스

리눅스 오류 - "Could not get lock /var/lib/dpkg/lock"

반응형

리눅스 기반 OS에서 apt-get을 사용하려는 도중 이러한 오류가 발생할 수 있습니다.

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) 
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

해당 오류는 apt-get을 다른 프로세스에서 사용 중일 때 발생합니다. 이 잠금은 통해 두 프로세스가 동시에 내용을 변경하지 않도록 하여 오류나 시스템 고장을 예방합니다.

 

우리는 어떤 프로세스가 apt-get을 사용하는지 확인할 수 있습니다.

ps aux | grep -i apt

해당 명령어를 이용하면 apt를 사용하는 프로세스를 확인할 수 있습니다.

 

[apt.systemd.daily 가 사용하는 경우]

만약 apt.systemd.daily 프로세스가 사용하고 있다면 이는 시스템 시작시 백그라운드에서 자동으로 시스템 업데이트 하는 데몬이므로 업데이트가 완료됨을 잠시 기다리면 apt-get을 정상적으로 사용할 수 있습니다.

 

 

[다른 프로그램에서 사용되는 경우]

위의 프로세스 확인 명령어를 통해 프로세스 ID를 확인할 수 있습니다.

프로세스를 종료시키기 위해서는 다음과 같은 명령어를 사용할 수 있습니다.

sudo kill <프로세스_id>
sudo kill -9 <프로세스_id>
sudo killall apt apt-get

kill의 -9 옵션은 kill만으로 종료되지 않을 시 사용할 수 있습니다.

 

[이래도 해결이 안 된 경우]

프로세스가 정상적으로 종료되지 않아 잠금 파일이 남아있을 수 있습니다.

원인이 되는 잠금 파일 자체를 삭제하면 문제를 해결할 수 있습니다.

하지만 그전에 잠금 파일을 사용하는 모든 프로세스를 중지하여 안전하게 제거합니다. 

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

해당 명령어를 통해 잠금 파일을 사용하는 프로세스를 확인할 수 있습니다.

명령이 아무것도 반환하지 않으면 사용하는 프로세스가 없다는 것입니다.

만일 존재하면 프로세스 ID를 반환하므로 해당 프로세스를 종료시킵니다.

sudo kill -9 <프로세스 ID>

사용하는 프로세스가 없다면 잠금 파일들을 안전하게 제거합니다.

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

패키지를 재구성한 뒤 apt가 정상적으로 작동되는지 확인합니다.

sudo dpkg --configure -a
sudo apt update

 

 

 

 

참고 자료

https://itsfoss.com/could-not-get-lock-error/ 

 

 

반응형


Calendar
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Visits
Today
Yesterday