X
    Categories: Практикум

Исправляем ошибку “Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock”


Многие пользователи Ubuntu и других Linux систем очень часто встречались с сообщением об ошибке “Не удалось получить доступ к файлу блокировки /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, шла установка программы в Центре приложений, Gdebi либо в другом окне Терминала. Ошибка должна пропасть, если дождаться установки, а потом просто закрыть одно из вышеперечисленных приложений. Но если инсталляция программы завершилась аварийно, то dpkg попросту “завис” и уже были созданы lock файлы. Поможет решить данную проблему полезная утилита fuser.

Программа покажет какие именно процессы используют файл. Выполним команду:

sudo fuser -v /var/lib/dpkg/lock

Вывод может быть такой:

ПОЛЬЗ-ЛЬ PID ДОСТУП КОМАНДА
/var/lib/dpkg/lock: root 3072 F…. synaptic

или такой:

ПОЛЬЗ-ЛЬ PID ДОСТУП КОМАНДА
/var/lib/dpkg/lock: root 3072 F…. dpkg

Чтобы завершить “зависший” процесс выполним команду:

sudo fuser -vki /var/lib/dpkg/lock

Разберем примененные параметры -vki.

-v (данный параметр перечислит все процессы, которые используют указанный адрес)
-k (данный параметр похож на команду kill и поможет завершить все процессы, использующие блокировочный файл)
-i (данный параметр служит для того, чтобы во время завершения процесса спрашивать нашего разрешения)

Программа должна спросить нашего разрешения на завершение процесса. Естественно, что мы должны ввести английскую букву “y” и нажать клавишу Enter. Далее мы должны переконфигурировать менеджер пакетов командой в Терминале:

sudo dpkg --configure -a

Если ошибка не пропадет, то нужно будет удалить файл блокировки:

sudo rm /var/lib/dpkg/lock

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

sudo dpkg --configure -a

То же самое касается и обновления системы. Вместо /var/lib/dpkg/lock нужно будет подставить /var/lib/apt/lists/lock и снова перечисленные выше команды.


admin-dm2003: