Тут є кілька хороших відповідей, але я просто хотів додати не-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