В Ubuntu или Debian, при обновлении или попытке установки пакета через APT возникает ошибка Unable to acquire the dpkg lock /var/lib/dpkg/lock.
Связанная она с тем что в данный момент может выполнятся процедура фонового обновления, либо обновления или установка в другой сессии, так же возможен, как более редкий случай, что предыдущий вызов apt был завершен с ошибкой.
1 2 3 4 | #apt update Reading package lists... Done E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable) E: Unable to lock directory /var/lib/apt/lists/ |
Файл ,блокировки используется для того что бы запретить одновременное выполнение операций с пакетами операционной системы.
Способ первый
Как бы банально это не звучало, но в большинстве случае достаточно просто подождать пока операции обновления или установки будут завершены.
Завершение процесса APT
Необходимо определить PID процесса APT, заодно убедиться что он запущен.
1 | ps aux | grep -i [a]pt |
Пример
1 2 3 | ps aux | grep -i [a]pt root 179402 4.0 0.0 19176 9596 pts/0 S+ 15:20 0:00 apt update root 180450 0.0 0.0 19176 3116 pts/0 S+ 15:20 0:00 apt update |
после этого можно завершить все процессы по их PID
1 | kill -9 <pid> |
Пример
1 | kill -9 179402 |
так же возможно завешить все процессы apt с помощью команды killall
1 | killall apt |
или
1 | killall apt-get |
Очистка файлов блокировки
Если процесса нет, или не помог предыдущий способ, так же можно удалить файлы блокировки, после этого переконфигурировать пакеты.
1 2 3 4 | rm /var/lib/apt/lists/lock rm /var/cache/apt/archives/lock rm /var/lib/dpkg/lock rm /var/lib/dpkg/lock-frontend |
1 | dpkg --configure -a |