Исправляем ошибку «Не удалось получить доступ к файлу блокировки
- Информация о материале
- Категория: Linux
- Опубликовано: 21.01.2018, 23:40
- Автор: HelpDesk
- Просмотров: 1626
Довольно часто пользователи сталкиваются с ошибкой "Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock". В этой короткой статье я расскажу как быстро и легко починить эту ошибку без перезагрузки системы.
Во время установки какого-то приложения, вы можете натолкнуться на ошибки следующего содержания в терминале:
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
Либо при обновлении системы можно на толкнуться на ошибку следующего толка:
E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11: Ресурс временно недоступен)
E: Невозможно заблокировать каталог /var/lib/apt/lists/
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
Такое происходит в момент установки приложений в разных приложениях. К примеру, у вас открыт synaptic, Центр приложений Ubuntu, Gdebi, в терминале и тд. В общем, в каком-то из приложений параллельно идет установка и ожидается вашего решения.
В этом случае, достаточно просто закрыть такое параллельное приложение, которое устанавливает приложение. И ошибка пройдет.
Но также, данная ошибка может случится, если установка приложения остановилась аварийно, в этом случае, у вас dpkg висит в фоне и созданы lock файлы.
Можно сделать перезагрузку системы и ошибка пройдет, но это не всегда удобно делать (по ряду причин).
Давайте решим эту проблему с помощью терминальной утилиты fuser.
Утилита fuser показывает какие процессы используют файл (подробнее её разберем в одной из будущих статей серии про терминал).
Сейчас же скажу, что флаг -v показывает какие процессы используют переданный адрес на файл. Посмотрим в нашем случае:
Как видно по выводу, у нас dpkg использует этот файл.
Флаг -k у нас аналогичен команде kill в терминале. То есть, данной командой мы удалим все процессы, которые используют данный файл блокировки. И укажем флаг i, который означает интерактивность, то есть будет показан диалог, завершить ли процесс.
sudo fuser -vki /var/lib/dpkg/lock
Вводим y для каждого процесса:
После чего вводим команду, которая переконфигурирует пакетный менеджер:
sudo dpkg --configure -a
Если после этого же ошибка осталась, то удалите ещё файл блокировки:
После чего снова выполняем:
Вместо /var/lib/dpkg/lock вы можете подставить /var/lib/apt/lists/lock и выполнить те же команды.
Ну или в крайнем случае, если лень делать удаление файлов блокировки и завершение процессов, то перезагрузите комп. После перезагрузки компа все равно, скорее всего придется выполнить команду, если установка какого то приложения не было завершено до конца: