Cloud/Linux
apt install error (/var/lib/dpkg/lock-frontend)
퐁스
2020. 9. 15. 13:45
한 노드에서 패키지를 다운받으려고 할 때 아래와 같은 에러가 나타났다.
ㅠ_ㅠ:~# 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