Поиск по сайту:

Решить, что база данных состояния dpkg заблокирована другим процессом


В этом руководстве объясняется, как исправить ошибку «база данных состояния dpkg заблокирована другим процессом» в дистрибутивах Linux на основе Debian.

Обычно эта ошибка означает, что менеджер пакетов используется другим процессом, возможно, зависшим. Ошибка может возвращать вывод, например

dpkg status database is locked by another process

Но одна и та же причина может генерировать разные сообщения об ошибках, как показано на снимке экрана ниже.

dpkg: error: dpkg frontend lock is locked by another process

Другие симптомы той же причины могут включать следующее сообщение.

Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 2839 (apt)... 30s

Или ошибка показана ниже.

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

В большинстве случаев предыдущие примеры сообщают, что вы уже устанавливаете, обновляете или удаляете пакеты. В некоторых случаях несколько администраторов могут управлять программным обеспечением через диспетчер пакетов, или процесс может блокировать приложение (dpkg), и удаление этого процесса, как описано ниже, решает проблему.

Примечание. Не забывайте использовать dpkg и apt с sudo.

Как исправить заблокированные или временно недоступные dpkg или apt:

Вам нужно идентифицировать процесс, занимающий dpkg или способный его убить. Чтобы идентифицировать процесс, вы можете использовать команду ниже.

sudo lsof /var/lib/dpkg/lock

Как видите, идентификатор процесса (PID) равен 16386. Чтобы убить его, выполните приведенную ниже команду, заменив 16386 на фактический PID с помощью диспетчера пакетов.

sudo kill -9 16386

Вы также можете запустить команду ниже, чтобы определить номер PID.

sudo lsof /var/cache/apt/archives/lock

Затем запустите:

sudo dpkg --configure -a

Другой способ определить процесс PID и вывести информацию о его использовании — использовать команду ps с grep, как показано ниже.

ps aux | grep apt

Исправление других ошибок dpkg и apt

В этом разделе вы можете найти несколько комбинаций команд для устранения некоторых проблем с apt и dpkg.

Первая команда, которую вы должны выполнить, прежде чем возникнут проблемы, это apt-update, как показано ниже. Эта команда обновляет подходящие репозитории.

sudo apt-get update

Ранее использовавшаяся команда dpkg –configure -a используется для устранения проблем с зависимостями.

sudo dpkg --configure -a

Приведенную ниже команду также можно использовать для устранения проблем с зависимостями.

sudo apt-get -f install

Чтобы очистить бесполезные зависимости, вы можете запустить:

sudo apt-get clean

О менеджерах пакетов Debian

Доступные менеджеры пакетов Debian включают dpkg, apt, apt-get, aptitude, synaptic и dpkg. -деб.

  • dpkg: Dpkg — это основной менеджер пакетов для Debian и основанных на нем дистрибутивов.

  • apt: интерфейс для dpkg, способный извлекать пакеты и разрешать зависимости.

  • aptitude: интерактивный интерфейс для apt.

  • Synaptics: графический менеджер пакетов.

  • dpkg-deb: другая команда для установки пакетов .deb.

Дополнительную информацию обо всех менеджерах пакетов Debian можно найти по адресу https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html#pkgprogs.

Заключение

Как видите, исправить проблемы с dpkg или apt довольно просто, и большинство ошибок имеют известные причины. Описанные выше команды могут исправить почти все проблемы, связанные с поврежденными пакетами или прерванными процедурами. Поскольку apt и aptitude являются внешними интерфейсами dpkg, обычно меры по устранению проблем одинаковы. Если все описанные шаги не работают, и ваша ошибка возникает на настольном компьютере, перезагрузка компьютера должна освободить диспетчер пакетов. Но все описанные выше шаги, если они применяются правильно, должны работать.

Статьи по данной тематике: