Главная >> Система >> Ошибка Unable to lock the administration directory /var/lib/dpkg

Ошибка Unable to lock the administration directory /var/lib/dpkg

При использовании утилиты apt для установки или обновления программного обеспечения в таких дистрибутивах как Ubuntu и Debian, в терминале можно столкнуться со следующей ошибкой: Unable to lock directory /var/lib/apt/lists.

Данная ошибка очень проста и исправить её не составит труда, но для новых пользователей она может показаться серьезным препятствием. В этой статье будет рассмотрено что означает ошибка Unable to lock directory /var/lib/apt/lists, а также как устранить эту проблему.


Содержание статьи

Что значит эта ошибка

В операционной системе Ubuntu 20.04 получить данную ошибку можно при выполнении таких команд как apt update, apt upgrade или apt install. А полный текст ошибки выглядит вот так:

  • E: Could not get lock /var/lib/apt/lists/lock. It is held by process 4746 (aptd)
  • N: Be aware that removing the lock file is not a solution and may break your system.
  • E: Unable to lock directory /var/lib/apt/lists/

+4Aiimq4DRChTSGuwHFptUC9OIpQlziCQToL72KlV6k6QBljZVy0y+22ikK+tQW9vvEmLIkKhS7vGlWghuKaq6kE7QTyDeBcq8gAXtQhI2vDwtf9fiOlmthf57eIAAAAASUVORK5CYII=

Так же можно получить следующую ошибку:

Waiting for cache lock: Coud not get lock /var/lib/dpkg/lock-frontend. It is held by process

H4oxCOrfBiCDAAAAAElFTkSuQmCC

Если дословно перевести значение данной ошибки, то утилита сообщает что не может создать файл блокировки /var/lib/apt/lists/lock далее утилита спрашивает нет ли уже запущенного второго экземпляра программы apt, который уже создал этот файл и сейчас работает с данной директорией.

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

Эта блокировка выполняется для того, чтобы два процесса не изменяли содержимое файла dpkg одновременно, так как это может привести к неоправданному риску поломки всей системы.

Также данная ошибка может возникать при выполнении автоматических обновлений. За данную опцию отвечает пакет под именем unattended-upgrades который как правило присутствует в большинстве дистрибутивов по умолчанию и запускается автоматически при загрузке операционной системы.

Как исправить Unable to lock the administration directory /var/lib/dpkg

Существует несколько способов решения данной проблемы. Рассмотрим все возможные варианты. Первый способ этой найти запущенный процесс apt и завершить его. Для этого сначала необходимо выполнить команду в терминале:

ps aux | grep -i apt

wUNlY9w71jrdAAAAABJRU5ErkJggg==

Данная команда отобразит идентификатор процесса, выполняющего процесс apt. В приведенном выше примере идентификатор процесса - 28382.

Можно использовать идентификатор процесса, чтобы завершить его. Необходимо заменить идентификатор процесса числом, которое было получено в выводе предыдущей команды. В данном примере это число 28382. Команда будет выглядеть следующем образом:

sudo kill 28382

8ADtRPMkzRN3oAAAAASUVORK5CYII=

Далее необходимо проверить, был ли процесс остановлен, запустив команду ps aux | grep -i apt еще раз. Если процесс все еще работает, его необходимо принудительно уничтожить при помощи команды:

sudo kill -9 28382

Другой, более простой способ - использовать команду killall, она завершит все экземпляры запущенной программы. Для этого необходимо выполнить команду:

sudo killall apt apt-get

Второй способ заключается в удаление файлов блокировки. Но, прежде чем удалять данные файлы, необходимо остановить процессы, использующие файлы блокировки. Для этого необходимо выполнить одну из следующих команд ориентируясь на ту, которая вернет число:

sudo lsof /var/lib/dpkg/lock

i+UEBtfbyLgAAAAASUVORK5CYII=

sudo lsof /var/lib/apt/lists/lock

BS3sns9MmrM8X9h+TQih+ClzgXnLJUCW5uistRohdlDdogDPdkHA81tbIelROGuQo8mZNupEo6YSOdToaFsZTsNkgYjPYHkAmI68JeYTFS6MwV3rAlJaXsfWCnm0MFiuP5MNNxqIwjuMrnM5pCcYCQw0U0C8OJsFYYOoMzy7lvWGjPtSkMk2OjgKWS7jxPmvtoGJ024l4RKTqf+v8DnMpr3Ma4HjcAAAAASUVORK5CYII=

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

D48MZhsz9y01AAAAAElFTkSuQmCC

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

sudo kill -9 process_id

И только после этого можно безопасно удалить файлы блокировки, используя следующие команды:

sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

После удаления файлов блокировки необходимо переконфигурировать пакеты при помощи команды:

sudo dpkg --configure -a

Выводы

В данной статье были рассмотрены два способа решения ошибки Unable to lock directory /var/lib/apt/lists которая может вызвать затруднения у новых пользователей. Но теперь вы знаете почему она появляется и как с ней бороться. Если у вас остались вопросы, пишите в комментариях!

4 комментария к “Ошибка Unable to lock the administration directory /var/lib/dpkg”

  1. sudo fuser -cuk /var/lib/dpkg/lock - за неправильные советы можно понести уголовную ответственность у меня комп постоянно стал перезагружаться после ввода такой строки

    Ответить
    • man fuser Прежде чем выполнять советы из интернета желательно разобраться в вопросе и прочитать официальное руководство.

      Ответить
  2. Что нисколько не оправдывает ваших действий. И тот факт, что вместо того, чтобы исправить очевидно некорректное описание опасной для системы команды, вы выдаёте в комментариях нечто вроде "сам дурак", говорит о нижайшем уровне сознательности. Если, разумеется, целью статьи изначально не было вредительство

    Ответить

Оставьте комментарий