Решение проблемы «E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock» в Kali Linux

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

E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?

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

Причина ошибки в том, что apt уже работает в фоне — скорее всего, просто скачивает пакеты обновлений, поскольку по умолчанию apt не устанавливает обновления самостоятельно.

Для других дистрибутивов это вызывает временное неудобство, поскольку нужно подождать, когда apt завершит свои фоновые задачи. Если нужно скачать много пакетов, а Интернет-соединение медленное, то придётся довольно долго ждать. Для Kali Linux, специализированного дистрибутива, такое поведение может для некоторых быть вообще неприемлемым. Кстати, авторы Kali Linux утверждают, что по умолчанию сетевые службы отключены. Тем не менее apt всё равно может автоматически скачивать обновления в фоне, когда вы об этом не подозреваете.


Дело в том, что, например, окружение рабочего стола (GNOME) могут запускать apt в фоне. Я, вроде бы, нашёл все настройки, после отключения которых apt уже никогда не будет ничего загружать без вашего ведома. Если после их применения у вас всё равно возникла ошибка «Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)», пишите в комментариях — будем копать ещё глубже.

Итак, начинаем с самого очевидного, отключаем скачивание обновлений по расписанию. Проверить, включены ли какие-либо автоматические обновления, можно командой:

systemctl list-unit-files | grep enabled | grep apt

Для их отключения:

sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer

Теперь отключаем Unattended (самостоятельные) обновления, для этого откройте файл файл /etc/apt/apt.conf.d/20auto-upgrades

sudo gedit /etc/apt/apt.conf.d/20auto-upgrades

в нём имеются следующие строки:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Первая отвечает за обновление списка пакетов, а вторая – за обновления самих пакетов в системе. Вместо единиц впишете нули.

Теперь проверьте, настроен ли GNOME делать автоматические обновления:

gsettings get org.gnome.software download-updates

Если будет выведено true, значит да, графическая оболочка также в фоне скачивает обновления.

Чтобы это отключить выполните:

sudo gsettings set org.gnome.software download-updates false

Чуть более подробно на эту тему я писал в статье Как правильно и навсегда исправить ошибку «E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock – open (11: Resource temporarily unavailable)».

Рекомендуется Вам:

5 комментариев to Решение проблемы «E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock» в Kali Linux

  1. Григорий:

    спасибо ! помогло очень

  2. игорь:

    igor@kali:~$ /etc/apt/apt.conf.d/20auto-upgrades
    bash: /etc/apt/apt.conf.d/20auto-upgrades: Нет такого файла или каталога
    Что делать с этим

    • Alexey:

      Ничего не делать. В последних Kali Linux всё отключено по умолчанию.

  3. Вася:

    Здравия. Вначале обрадовался, два автообновления отключило, два таймера. А поом попробовал - всё равно ошибку пишет /var/lib/dpkg/lock-frontend-open (13: Отказано в доступе). По всему списку прошёлся пару раз с правами, но - увы. Вам, думаю, всё уже известно по эой ошибке. Надоели, думаю. Потратьте, пожалуйста, немного времени на мою проблему, подскажите - что и как сделать.

    • Alexey:

      Приветствую! Когда я писал эту статью, то действительно постоянно натыкался на эту ошибку. Но в последние месяцы на новых версиях Kali Linux я с этой ошибкой больше не сталкивался, хотя использую её только в виртуальном компьютере. На основном компьютере у меня Arch Linux там такой проблемы нет в принципе — работает ровно то, что я сам запустил.

      В следующий раз в момент, когда столкнётесь с этой ошибкой, сразу выполните такую команду:

      lsof /usr/bin/apt

      Возможно, она покажет, через какую команду был запущен процесс apt.

      Кстати, какое у вас окружение рабочего стола? GNOME или что-то ещё? Какая версия Kali Linux?

      Если команда lsof /usr/bin/apt не поможет и если у вас последняя версия Kali Linux, то тогда вам нужно писать о проблеме в официальном багтрекере Kali Linux.

Добавить комментарий

Ваш адрес email не будет опубликован.