리눅스 기반 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/