Устраните ошибку невозможно получить блокировку /var/lib/dpkg/lock в Ubuntu раз и навсегда

Ошибка «не удалось получить блокировку /var/lib/dpkg/lock» часто встречается в системах Debian/Ubuntu, работающих на виртуальных машинах. Стандартные решения, предлагаемые в сети (например, завершение процесса apt-get или удаление блокировочного файла), не являются оптимальными, так как могут навредить системе, и в будущем эта ошибка может повториться.

Решите проблему с блокировкой файла /var/lib/dpkg/lock раз и навсегда

Я объясню вам, в чем заключается реальная причина этой ошибки, и продемонстрирую, как окончательно решить эту проблему. Сообщение об ошибке выглядит так:

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

не удалось получить блокировку var lib dpkg lock

Сообщение об ошибке уже указывает на причину: каталог /var/lib/dpkg/ используется другим процессом. Это связано с тем, что в Ubuntu по умолчанию активированы автоматические обновления для обеспечения безопасности.

После завершения загрузки операционной системы Ubuntu, она автоматически запускает команду apt-get update. Если обнаруживаются обновления безопасности, они устанавливаются в фоновом режиме. Таким образом, при одновременном выполнении команды sudo apt upgrade появляется указанная ошибка. Так как вы не так часто используете Ubuntu в Virtualbox или VMware Workstation, как на реальном оборудовании, виртуальная машина Ubuntu обновляется реже, и поэтому эта ошибка возникает чаще именно в виртуальной среде.

Читайте также:  Перенаправление HTTP на HTTPS с использованием .htaccess

Неважно, работаете ли вы с Ubuntu на реальном компьютере или в виртуальной среде, вы можете отключить автоматические обновления, чтобы навсегда устранить эту проблему.

Эта ошибка редко встречается на серверах с Ubuntu, и рекомендуется активировать автоматические обновления для обеспечения автоматической установки патчей безопасности.

Для этого откройте «Программы и обновления» через меню приложений.

другой процесс использует его

Откройте вкладку с обновлениями. Обычно обновления безопасности загружаются и устанавливаются автоматически. При желании вы можете изменить настройку на ручное уведомление, чтобы команда sudo apt-get upgrade не запускалась автоматически в фоне.

Исправьте ошибку “не удалось получить блокировку var lib dpkg lock”.

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

Не удалось заблокировать каталог администратора.

Затем перезагрузите ваш компьютер.

Выключение автоматических обновлений через командную строку.

Вы можете получить аналогичные результаты через командную строку. В терминале откройте файл /etc/apt/apt.conf.d/20auto-upgrades с помощью текстового редактора, например, nano.

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

Конечно, напишите текст, который вы хотите перефразировать, и я помогу вам с этим!

APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "1";

Для деактивации автоматического обновления безопасности измените их на

APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "0"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "0";

Для того чтобы сохранить документ в текстовом редакторе Nano, нажмите комбинацию клавиш Ctrl+O, а затем Enter для подтверждения имени файла. Чтобы закрыть редактор, используйте комбинацию Ctrl+X. После этого перезагрузите компьютер.

Читайте также:  7 Полезных Советов, Чтобы Ваши Электронные Письма Не Попадали в Спам

Обновление

Читатель рассказал мне, что даже после выполнения указанных выше шагов ошибка все еще появляется, когда он запускает команду sudo apt update сразу после загрузки Ubuntu. Это происходит из-за того, что фоновые процессы “apt update” еще не завершили свою работу.

Если вы регулярно обновляете пакеты вручную, то настоятельно рекомендую настроить «автоматическую проверку обновлений» на еженедельный режим, а не ежедневный. Для окончательного решения проблемы с сообщениями об ошибках установите параметр на «Никогда».

автоматически проверять наличие обновлений

Когда происходят автоматические обновления в Ubuntu?

Ubuntu автоматически обновляет систему после загрузки. Кроме того, Systemd может выполнять автоматические обновления. Для ежедневного обновления списка пакетов используется служба apt-daily.service, а для загрузки и установки обновлений безопасности — служба apt-daily-upgrade.service. Вы можете проверить их состояние с помощью:

systemctl status apt-daily.service systemctl status apt-daily-upgrade.service

Служба apt-daily.service управляется таймером apt-daily. timer. Этот таймер функционирует аналогично задаче cron, которая запускает службу systemd с тем же названием в определенные моменты времени. Файл конфигурации apt-daily. timer расположен по адресу /lib/systemd/system/apt-daily. timer. Его содержимое можно просмотреть с помощью:

Читайте также:  Squid настройка

cat /lib/systemd/system/apt-daily. timer

[Unit] Description=Ежедневные действия загрузки apt [Timer] OnCalendar=--* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers. target

Зеленая строка демонстрирует, что apt-daily.service активируется ежедневно в 6:00 и 18:00. Параметр RandomizedDelaySec=12h указывает, что выполнение будет задержано на 0.~12 часов, если у другого таймера совпадает время начала.

Служба apt-daily-upgrade.service управляется таймером apt-daily-upgrade. timer, а конфигурационный файл этого таймера расположен по адресу /lib/systemd/system/apt-daily-upgrade. timer.

cat /lib/systemd/system/apt-daily-upgrade. timer

[Unit] Description=Ежедневные действия обновления и очистки apt After=apt-daily. timer [Timer] OnCalendar=--* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers. target

apt-daily-upgrade.service выполняется ежедневно в 6:00. Параметр RandomizedDelaySec=60m указывает на то, что процесс может быть отложен до одного часа.~60 минут, если другой таймер запускается в то же время.

Пакет apt включает в себя два файла с расширением.service и два файла с расширением. timer. Эти файлы связаны с оболочкой, расположенной по адресу /usr/lib/apt/apt. systemd. daily, которая запускается службами apt-daily.service и apt-daily-upgrade.service.

Оболочка /usr/lib/apt/apt. systemd. daily считывает настройки из файла /etc/apt/apt.conf.d/20auto-upgrades. Таким образом, для устранения указанной ошибки нет необходимости отключать оба таймера.

На этом всё! Надеюсь, что данная статья оказалась полезной для решения проблемы «не удалось получить блокировку /var/lib/dpkg/lock» в Ubuntu. Как обычно, если вам понравился этот материал, подписывайтесь на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.