본문 바로가기

Cloud/Linux

apt install error (/var/lib/dpkg/lock-frontend)

한 노드에서 패키지를 다운받으려고 할 때 아래와 같은 에러가 나타났다.

ㅠ_ㅠ:~# apt install sysstat
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?

 다른 프로세스의 업데이트와 겹쳐 두 프로세스가 내용을 동시에 교체하지 못하게 하려고 이런 현상이 나타난다는데, 며칠동안 상황이 똑같아서 임의로 해결해주기로 하였다.

ㅠ_ㅠ:/var/lib/apt/lists# ps -ef | grep apt
root     14438     1  0 Aug07 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily install
root     14461 14438  0 Aug07 ?        00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install
root     16180  2386  0 13:11 pts/2    00:00:00 grep --color=auto apt

ps -ef 로 잡아주면 apt.systemd.daily install이 돌아가고 있는 것을 볼 수 있었다. 8월 7일이네...  자동 업데이트가 켜져있어서 운영체제가 임의로 업데이트를 시도한 것이다.

vi /etc/apt/apt.conf.d/20auto-upgrades
# 내용
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

0으로 바꾸면 자동 업데이트를 하지 않는데, 폐쇄망에선 신경쓰지 않았던 점이라 머쓱하긴하다. 일단 kill 명령어를 통해 업데이트 프로세스를 종료해준다.

ㅠ_ㅠ# kill -9 14438
ㅠ_ㅠ# kill -9 14461
ㅠ_ㅠ# ps -ef | grep apt
root     25351  2386  0 13:17 pts/2    00:00:00 grep --color=auto apt

그리고 시도하면 안된다. lock 파일이 존재해서 lock 상태는 풀리지 않았기 때문이다. lock과 연관된 프로세스를 찾아 종료하고, lock 파일을 제거해준다.

ㅠ_ㅠ# lsof /var/lib/dpkg/lock
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
dpkg    19754 root    3uW  REG    8,2        0 524493 /var/lib/dpkg/lock

ㅠ_ㅠ# lsof /var/lib/apt/lists/lock
ㅠ_ㅠ# lsof /var/cache/apt/archives/lock 
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
unattende 14651 root   89uW  REG    8,2        0 524449 /var/cache/apt/archives/lock

ㅠ_ㅠ# rm /var/lib/apt/lists/lock
ㅠ_ㅠ# rm /var/cache/apt/archives/lock 
ㅠ_ㅠ# rm /var/lib/dpkg/lock

이후 dpkg를 통해 구성되지 않은(못한) 패키지들을 다시 configure 해주고 apt 명령어를 통해 정상 작동됨을 확인한다.

ㅠ_ㅠ# dpkg --configure -a