dpkg: ошибка: база данных статуса dpkg заблокирована другим процессом

Мне просто интересно, может кто-нибудь сказать мне, что это значит:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
reidsr@ubuntu:~$ sudo dpkg --configure -a
dpkg: error: dpkg status database is locked by another process
reidsr@ubuntu:~$ 

Как мне запустить sudo dpkg --configure -a вручную?

70
задан 17 July 2015 в 14:20

10 ответов

Первый запуск:

lsof /var/lib/dpkg/lock

Затем убедитесь, что процесс не запущен:

ps cax | grep PID

Если запущен:

kill PID
#wait
kill -9 PID

Убедитесь, что процесс завершен:

ps cax | grep PID

Затем удалите файл блокировки:

sudo rm /var/lib/dpkg/lock

Дайте самому dpkg исправить:

sudo dpkg --configure -a

После этого у вас все будет хорошо:) [ 1112]

0
ответ дан 17 July 2015 в 14:20

Это может произойти, если процесс обновления был прерван (как будто ваше соединение было потеряно). Вы можете попробовать использовать screen в качестве root (sudo su), чтобы вернуться в сессию.

screen -r
0
ответ дан 17 July 2015 в 14:20

Вы не можете запускать несколько пакетов приложений / команд / инструментов одновременно. Иногда это означает, что в фоновом режиме работают synaptic, apt-get или инструмент обновления пакетов. Просто закройте другие инструменты пакета или дождитесь их завершения. И dpkg будет работать.

0
ответ дан 17 July 2015 в 14:20

Можно также попробовать:

sudo apt-get install -f

Исправить все поврежденные пакеты:

Исправить; попытаться исправить систему с нарушенными зависимостями. Эта опция, когда используется с установкой / удалением, может пропустить любые пакеты, чтобы позволить APT вывести вероятное решение. Если указаны пакеты, они должны полностью устранить проблему. Эта опция иногда необходима при первом запуске APT; Сам APT не позволяет существующим в системе нарушенным зависимостям пакетов. Вполне возможно, что структура зависимости системы может быть настолько повреждена, что потребует ручного вмешательства (что обычно означает использование dselect(1) или dpkg --remove для устранения некоторых пакетов-нарушителей). Использование этой опции вместе с -m может привести к ошибке в некоторых ситуациях. Элемент конфигурации: APT :: Get :: Fix-Broken.

0
ответ дан 17 July 2015 в 14:20

Следующее должно помочь:

sudo rm /var/lib/dpkg/lock

sudo dpkg --configure -a
0
ответ дан 17 July 2015 в 14:20

Один подход должен только перезапустить ПК. Это работало на меня.

1
ответ дан 16 October 2019 в 16:11

Существуют некоторые хорошие ответы здесь, но просто требуемый для добавления non-lsof метода нахождения, что dpkg блокируют пользователя

Шаг 1: Узнайте, кто блокирует dpkg:

Опция № 1: Используя lsof (не всегда устанавливаемый на машине)

lsof /var/lib/dpkg/lock

Опция № 2: Используя удар

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: Удалите Шаг 4 файла

sudo rm /var/lib/dpkg/lock

блокировки: Зафиксируйте dpkg внутреннее состояние

sudo dpkg --configure -a

0
ответ дан 16 October 2019 в 16:11

В нашем случае не было никакого рабочего процесса (PID) так я трудно остановлен и не перезагрузил VPS.

Затем, существует несколько файлов блокировки, которые, возможно, должны были бы быть удалены:

sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock

Затем можно зафиксировать dpkg, как предложено:

sudo apt update
sudo dpkg --configure -a
0
ответ дан 16 October 2019 в 16:11

Одна вещь, о которой не упоминалось, - вы могли включить автоматическое / автоматическое обновление. В таком случае unattended-upgr , вероятно, удерживает блокировку dpkg. В этом случае принудительное удаление файла блокировки НЕ - хорошая идея!

Вы можете проверить, работает ли он, используя следующее:

ps -A | grep unattended-upgr

Вы также можете увидеть, удерживает ли этот процесс блокировку, используя шаг 1 ответа Дэниела Тругмана. Вариант № 2 (с использованием bash) был единственным, который показал мне PID, который заблокировал файл, и указал мне на unattended-upgr.

Насколько я знаю, у вас есть только два варианта: терпеливо дождаться завершения обновлений или временно отключить автоматические / автоматические обновления, установить необходимый пакет и снова включить его.

0
ответ дан 23 April 2020 в 16:51

Ни один ответ в этой теме не помог мне решить эту проблему. Я удалил файлы блокировки, и PID не работал, но всякий раз, когда я выполнял sudo dpkg --configure -a , оболочка зависала на одной из ранее заблокированных задач «apt», которые у меня были. принудительное закрытие путем закрытия терминала в конце. Я также убил процессы apt, используя sudo killall apt apt-get. Застрявшая apt-задача в моем случае была «Настройка docker-ce (5:20.10.1~3-0~ubuntu-bionic)».

Решение в моем случае:

  • Загрузиться в режиме восстановления.
  • В меню восстановления выберите «root», чтобы «Перейти к корневой оболочке».
  • Нажмите Enter.
  • Введите «sudo dpkg --configure -a».
  • Продолжайте делать то, что вы собирались сделать, теперь это должно работать и/или просто перезагрузиться.

Пожалуйста, посмотрите скриншоты и подробное объяснение (например, как получить режим восстановления при запуске) в ответе docker ps застрял… docker install также просто зависает.

1
ответ дан 29 December 2020 в 15:10

Другие вопросы по тегам:

Похожие вопросы: