Бесплатная миграция IT-инфраструктуры в облако
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Устранение ошибки «Could not get lock /var/lib/dpkg/lock»

Иногда при запуске утилиты apt или apt-get вы можете получить ошибку в терминале:

E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)

Формулировка ошибки и путь к lock-файлу могут отличаться в зависимости от конкретного случая, но если речь идет о невозможности заблокировать файл dpkg, все они будут устраняться схожими методами.

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

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

Если же проблема сохраняется, ее можно решить следующими способами.

Способ 1. Завершить процесс принудительно

Выполните команду ниже, чтобы найти все запущенные экземпляры утилиты apt:

ps aux | grep -i apt

В выводе отобразятся активные процессы, а также их ID (второй столбец). 

Если в выводе будет apt.systemd.daily update, рекомендуем не завершать такой процесс. Это утилита автоматической проверки и установки обновлений — просто дождитесь завершения ее работы.

Завершить ненужный процесс можно командой:

sudo kill -9 ID_процесса

Другой вариант — завершить все процессы утилит apt и apt-get сразу, не проверяя конкретные процессы. Это можно сделать командой:

sudo killall apt apt-get

Способ 2. Удалить файлы блокировки

Если предыдущий способ не помог, вероятнее всего, проблема связана не с активными процессами apt или apt-get, а с некорректным завершением одного из процессов ранее. 

Сначала воспользуемся командой lsof, чтобы посмотреть, каким процессом используется lock-файл.

Последовательно выполните команды:

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/dpkg/lock-frontend
sudo lsof /var/lib/apt/lists/lock 
sudo lsof /var/cache/apt/archives/lock 

В ответ команда может не выдать ничего или выдать одно или несколько чисел — это ID процессов. Завершите их, указывая полученные ID:

sudo kill -9 ID_процесса

Затем удалите lock-файлы:

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

Попробуйте снова запустить apt или apt-get — все должно работать корректно.

 

Была ли статья полезна?
Ваша оценка очень важна
Комментарии 2
Nigilist1990
Nigilist1990
27.09.2023, 06:32

root@:~# sudo dpkg --configure -a

dpkg: ошибка: анализ файла «/var/lib/dpkg/status» около строки 11367 пакета «ia32-libs»:

В поле «Provides» отсутствует имя архитектуры или указано что-то, что не может являться именем архитектуры

Команда Timeweb Cloud
Команда Timeweb Cloud
09.10.2023, 05:08

Добрый день! Вероятно, вы используете устаревшую версию ОС. Однако без диагностики сложно сказать точно. Напишите, пожалуйста, в поддержку из панели управления — коллеги всё проверят и помогут 💙