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

Исправить ошибку «E: не удалось получить блокировку /var/lib/dpkg/lock» в Ubuntu

Это краткое руководство поможет вам узнать, как исправить ошибку «E: Не удалось получить блокировку /var/lib/dpkg/lock» в Ubuntu. Обычно это происходит, когда в фоновом режиме уже выполняется другая операция apt.

У меня есть виртуальная машина Ubuntu 18.04 LTS, которую я использую в целях тестирования. Всякий раз, когда я запускаю эту виртуальную машину и пытаюсь обновить или установить любое приложение с помощью диспетчера пакетов APT, я получаю следующую ошибку:

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?

Или что-то подобное, как показано ниже:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
E: Could not get lock /var/lib/apt/lists/lock – open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

Это происходит каждый раз. Мне пришлось подождать несколько минут, чтобы выполнить удачную операцию.

Я знаю, что какой-то процесс заблокировал базу данных apt во время установки или удаления программного обеспечения или обновления системы в фоновом режиме. Я запустил команду top, чтобы изучить список запущенных процессов. Изучив выходные данные команды top, я узнал, что существует процесс под названием unattended-update, который запускает apt update. > каждый раз, когда я включаю свою виртуальную машину Ubuntu. Пока выполняется обновление apt, база данных apt заблокирована, и я не могу выполнить какую-либо операцию apt.

Исправить ошибку «E: не удалось получить блокировку /var/lib/dpkg/lock» в Ubuntu

Правильный способ устранения ошибки "E: Не удалось получить блокировку /var/lib/dpkg/lock"  — позволить корректно завершить текущую задачу установки, обновления или удаления. . Этот процесс займет некоторое время (от 5 до 10 минут или больше) в зависимости от размера обновления. Как только эта задача будет выполнена, блокировка будет снята автоматически.

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

Сначала давайте выясним, какой процесс владеет файлом блокировки, т. е. /var/lib/dpkg/lock.

sudo lsof /var/lib/dpkg/lock

Если файл блокировки другой, например /var/lib/dpkg/lock-frontend, вы можете узнать PID процесса, которому принадлежит этот файл блокировки, с помощью команды:

sudo lsof /var/lib/dpkg/lock-frontend

Если файл блокировки — «/var/lib/apt/lists/lock», запустите:

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

Пример вывода:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 1548 root 6uW REG 8,2 0 1181062 /var/lib/dpkg/lock

E: Не удалось получить блокировку /var/lib/dpkg/lock-frontend — открыть (11: Ресурс временно недоступен)

Как видно из приведенного выше вывода, PID процесса, содержащего файл блокировки, равен 1548.

Просто убейте его, чтобы снять блокировку, используя команду:

sudo kill -9 1548

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

sudo rm /var/lib/dpkg/lock

Или,

sudo rm /var/lib/dpkg/lock-frontend

Или,

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

Также вам может потребоваться удалить файл блокировки в каталоге кеша:

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

После снятия блокировки выполните:

sudo dpkg --configure -a

Это должно решить проблему.

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

  • Как исправить сломанную ОС Ubuntu без ее переустановки

Удачи!

Является ли удаление файла блокировки правильным решением?

Конечно, нет! Как заметил один из наших читателей, г-н Гиллем Джовер, удаление файлов блокировки никогда не является правильным решением и может привести к потере данных или повреждению системы. Вы должны позволить текущей задаче apt завершиться корректно. Однако иногда задача может выполняться дольше обычного или зависать.

Если когда-либо возникнет необходимость завершить такие замороженные процессы, выполните следующие команды:

sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend
sudo dpkg --configure --pending

Первая команда будет искать процессы, в данный момент удерживающие блокировки, выводить информацию о них и предлагать их завершить. Если плавное завершение не работает, возможно, вам придется вместо этого использовать -KILL. Команда dpkg --configure --pending необходима для завершения любой ожидающей настройки, чтобы позволить процессам перейти в нормальное состояние и позволить dpkg объединить любые обновления журнала базы данных с основной базой данных состояния.

Ресурс:

  • Вики Debian

Связанное чтение:

  • Как отключить автоматические обновления в Ubuntu

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