Мне просто интересно, может кто-нибудь сказать мне, что это значит:
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
вручную?
Первый запуск:
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]
Это может произойти, если процесс обновления был прерван (как будто ваше соединение было потеряно). Вы можете попробовать использовать screen в качестве root (sudo su
), чтобы вернуться в сессию.
screen -r
Вы не можете запускать несколько пакетов приложений / команд / инструментов одновременно. Иногда это означает, что в фоновом режиме работают synaptic, apt-get или инструмент обновления пакетов. Просто закройте другие инструменты пакета или дождитесь их завершения. И dpkg будет работать.
Можно также попробовать:
sudo apt-get install -f
Исправить все поврежденные пакеты:
Исправить; попытаться исправить систему с нарушенными зависимостями. Эта опция, когда используется с установкой / удалением, может пропустить любые пакеты, чтобы позволить APT вывести вероятное решение. Если указаны пакеты, они должны полностью устранить проблему. Эта опция иногда необходима при первом запуске APT; Сам APT не позволяет существующим в системе нарушенным зависимостям пакетов. Вполне возможно, что структура зависимости системы может быть настолько повреждена, что потребует ручного вмешательства (что обычно означает использование
BLOCKQUOTE>dselect(1)
илиdpkg --remove
для устранения некоторых пакетов-нарушителей). Использование этой опции вместе с -m может привести к ошибке в некоторых ситуациях. Элемент конфигурации: APT :: Get :: Fix-Broken.
Следующее должно помочь:
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
Один подход должен только перезапустить ПК. Это работало на меня.
Существуют некоторые хорошие ответы здесь, но просто требуемый для добавления 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
В нашем случае не было никакого рабочего процесса (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
Одна вещь, о которой не упоминалось, - вы могли включить автоматическое / автоматическое обновление. В таком случае unattended-upgr
, вероятно, удерживает блокировку dpkg. В этом случае принудительное удаление файла блокировки НЕ - хорошая идея!
Вы можете проверить, работает ли он, используя следующее:
ps -A | grep unattended-upgr
Вы также можете увидеть, удерживает ли этот процесс блокировку, используя шаг 1 ответа Дэниела Тругмана. Вариант № 2 (с использованием bash) был единственным, который показал мне PID, который заблокировал файл, и указал мне на unattended-upgr.
Насколько я знаю, у вас есть только два варианта: терпеливо дождаться завершения обновлений или временно отключить автоматические / автоматические обновления, установить необходимый пакет и снова включить его.
Ни один ответ в этой теме не помог мне решить эту проблему. Я удалил файлы блокировки, и PID не работал, но всякий раз, когда я выполнял sudo dpkg --configure -a
, оболочка зависала на одной из ранее заблокированных задач «apt», которые у меня были. принудительное закрытие путем закрытия терминала в конце.
Я также убил процессы apt, используя sudo killall apt apt-get
. Застрявшая apt-задача в моем случае была «Настройка docker-ce (5:20.10.1~3-0~ubuntu-bionic)
».
Решение в моем случае:
Пожалуйста, посмотрите скриншоты и подробное объяснение (например, как получить режим восстановления при запуске) в ответе docker ps застрял… docker install также просто зависает.