ГлавнаяОперационные системыLinuxПричины и решения ошибки «Невозможно заблокировать (/var/lib/dpkg/)» в Ubuntu

Причины и решения ошибки «Невозможно заблокировать (/var/lib/dpkg/)» в Ubuntu

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

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

Невозможно заблокировать (/var/lib/dpkg/) – диагностика проблемы

Всякий раз, когда вы сталкиваетесь с этой ошибкой, первым делом следует внимательно прочитать описание ошибки. Обычно он содержит несколько важных советов, позволяющих сэкономить время. В качестве примера на следующих снимках экрана показано, как команда «apt-get install» выдает похожие ошибки.

admin-<div id=

Contents

Невозможно заблокировать (/var/lib/dpkg/) – диагностика проблемы

t.ru/wp-content/uploads/2024/05/admin-dir-error-lock.png" alt="admin-dir-error-lock">

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

Если вы столкнулись с ошибкой, связанной с разрешениями (как показано на первом изображении выше), скорее всего, это связано с тем, что пользователь, выполняющий команду «apt-get» или «apt», не имеет достаточных привилегий, и команда запускался без sudo. Как только команда будет запущена с правами root, ошибка исчезнет.

Однако если это ошибка, связанная с блокировкой, она требует дальнейшего расследования.

Читайте также: Исправление «имя пользователя отсутствует в файле sudoers. Об этом инциденте будет сообщено» Ошибка в Ubuntu

Что такое /var/lib/dpkg/?

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

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

Шаг 1. Посмотрите, есть ли какой-либо другой процесс, удерживающий блокировку

Теперь это должно показаться вполне логичным, не так ли? И для этого вы можете воспользоваться старой доброй командой psи передать ее вывод команде grep, чтобы тратить меньше времени на поиск того, что вам нужно. Например, вот команда, которая позволяет узнать, запущен ли уже какой-либо процесс «apt», «apt-get» или «aptitude»:

ps aux | grep apt

Шаг 2. Подождите некоторое время, а затем действуйте

Если действительно существует команда, которая уже получила блокировку, в идеале вам следует дождаться ее завершения и снять блокировку. Однако, если команда выполняется дольше ожидаемого времени, и вы уверены, что она где-то застряла, вы можете завершить ее, используя доступные команды killили killall( подробнее о них Что такое /var/lib/dpkg/?но решить вашу проблему.

Здесь стоит упомянуть, что никогда не рекомендуется напрямую завершать процесс «dpkg» — это может привести к повреждению базы данных пакетов. Я подчеркиваю этот момент, потому что теперь вы знаете, что такие инструменты, как «apt» и «apt-get», вызывают «dpkg» внутри себя, поэтому вполне возможно, что вы подумаете об уничтожении процесса «dpkg», если обнаружите его в файле «ps».» вывод команды.

Завершение процессов, инициированных запуском команд apt, apt-get или aptitude, обычно гораздо безопаснее.

Шаг 3. Когда вывод команды «ps» не помогает

Имейте в виду, что помимо инструментов командной строки, таких как apt и apt-get, эту блокировку также получают некоторые приложения с графическим интерфейсом, такие как Центр программного обеспечения или Менеджер обновлений.

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

Вернемся к приложениям с графическим интерфейсом, о которых мы говорили, еще один полезный и экономящий время вариант — исполь

Шаг 1. Посмотрите, есть ли какой-либо другой процесс, удерживающий блокировку

олько файл, к которому осуществляется доступ («/var/lib/dpkg/lock» в нашем случае), и вы можете завершить процесс, обращающийся к этому файлу, даже если вы не знаете, какой процесс это. Например:

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

Имейте в виду, что команда fuserне снимет блокировку, полученную только что уничтоженным процессом, поэтому вам придется сделать это вручную:

sudo rm -f /var/lib/dpkg/lock

Примечание : «снять блокировку» просто означает удаление ф

Шаг 2. Подождите некоторое время, а затем действуйте

блокировку» воссоздав его.

Вам также может потребоваться выполнить следующие две команды:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

Важный совет : никогда не удаляйте файлы блокировки в первую очередь – это только последнее средство.

Заключение

В общем, всегда полезно понять причину проблемы, прежде чем приступить к ее решению. Слепые попытки решить проблему никогда не помогут вам – в некоторых случаях вы можете добиться успеха, но чаще всего вы окажетесь в еще большей неразберихе, особенно если в качестве ОС используется Linux.

Вы когда-нибудь сталкивались с ошибкой, которую мы здесь обсуждали? Как вы с этим разобрались? Оставьте свой ответ в комментариях.

Читайте также: Как исправить ошибку «В репозитории нет файла релиза»

Шаг 3. Когда вывод команды «ps» не помогает

Заключение

ПОХОЖИЕ СТАТЬИ

Популярные записи