Здесь есть несколько хороших ответов, но я просто хотел добавить не-lsof метод поиска пользователя блокировки dpkg
Шаг 1: Узнайте, кто блокирует dpkg:
Вариант № 1: Использование lsof (не всегда установлен на машине)
lsof /var/lib/dpkg/lock
Вариант № 2: Использование Bash
for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done
Шаг 2: Решите, что вы хотите сделать с текущим пользователем dpkg
Если такого процесса нет, решать нечего, просто перейдите к следующему шагу.
В противном случае вы должны решить, хотите ли вы убить процесс или позволить ему закончить изящно. Если вы решили убить его, просто используйте kill <pid>
. Если процесс все равно не умрет, вы можете подумать об его уничтожении kill -9 <pid>
, но это может привести к определенным несоответствиям, и я советую не делать этого, если вы не знаете, что делаете.
Шаг 3: Удалить файл блокировки
sudo rm /var/lib/dpkg/lock
Шаг 4: Исправьте внутреннее состояние dpkg
sudo dpkg --configure -a