HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Решение проблемы «E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock» в Kali Linux
Иногда при использовании менеджера пакетов apt для установки программы или обновления пакетов, возникает ошибка:

В Интернете уже достаточно часто обсуждалась эта ошибка, но я решил вернуться к её решению, поскольку обычно дают неправильный совет, что нужно удалить /var/lib/dpkg/lock. Если не было аварийного завершения работы менеджера пакетов apt, то не надо удалять файлы-блокировщики. Это приведёт к тому, что apt при последующем использовании будет сообщать об ошибке и придётся запускать команду для наведения порядка в пакетах.
Причина ошибки в том, что apt уже работает в фоне — скорее всего, просто скачивает пакеты обновлений, поскольку по умолчанию apt не устанавливает обновления самостоятельно.
Для других дистрибутивов это вызывает временное неудобство, поскольку нужно подождать, когда apt завершит свои фоновые задачи. Если нужно скачать много пакетов, а Интернет-соединение медленное, то придётся довольно долго ждать. Для Kali Linux, специализированного дистрибутива, такое поведение может для некоторых быть вообще неприемлемым. Кстати, авторы Kali Linux утверждают, что по умолчанию сетевые службы отключены. Тем не менее apt всё равно может автоматически скачивать обновления в фоне, когда вы об этом не подозреваете.
Итак, начинаем с самого очевидного, отключаем скачивание обновлений по расписанию. Проверить, включены ли какие-либо автоматические обновления, можно командой:
Теперь отключаем Unattended (самостоятельные) обновления, для этого откройте файл файл /etc/apt/apt.conf.d/20auto-upgrades
в нём имеются следующие строки:
Первая отвечает за обновление списка пакетов, а вторая – за обновления самих пакетов в системе. Вместо единиц впишете нули.
Теперь проверьте, настроен ли GNOME делать автоматические обновления:
Если будет выведено true, значит да, графическая оболочка также в фоне скачивает обновления.
Чтобы это отключить выполните:
Аварийное завершение работы во время обновления системы или установки программ
Если рассматриваемая ошибка была вызвана тем, что система была выключена во время обновления, то для её исправления нужно выполнить:
Скорее всего, чтобы вновь появилась возможность использовать apt понадобиться выполнить следующую команду, для исправления проблем:
Кали линукс не удалось открыть файл блокировки
Довольно часто пользователи сталкиваются с ошибкой «Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock». В этой короткой статье я расскажу как быстро и легко починить эту ошибку без перезагрузки системы.
Коротко об ошибке и почему она возникает.
Во время установки какого-то приложения, вы можете натолкнуться на ошибки следующего содержания в терминале:
Либо при обновлении системы можно на толкнуться на ошибку следующего толка:
Такое происходит в момент установки (обновлении) программ / пакетов в разных приложениях одновременно.
К примеру, у вас открыт synaptic, Центр приложений Ubuntu, Gdebi, терминал и тд. Также, вы могли запустить установку приложений в нескольких вкладках терминала одновременно. В общем, в каком-то из приложений параллельно идет установка и ожидается ваше решение.
В этом случае, достаточно просто закрыть такое параллельное приложение, которое устанавливает новую программу (обновляет пакеты и тд). И ошибка пройдет.
Но данная ошибка может случиться, если установка приложения остановилась аварийно.
В этом случае, у вас dpkg висит в фоне и созданы lock файлы.
Можно сделать перезагрузку системы и ошибка пройдет, но это не всегда удобно делать (по ряду причин).
Давайте решим эту проблему с помощью терминальной утилиты fuser.
Утилита fuser показывает какие процессы используют файл (подробнее её разберем в одной из будущих статей серии про терминал).
Сейчас же скажу, что флаг -v показывает какие процессы используют переданный адрес на файл. Посмотрим в нашем случае:
По выводу в терминале видно, что dpkg использует этот файл.
Флаг -k аналогичен команде kill в терминале. То есть, данной командой мы удалим все процессы, которые используют данный файл блокировки.
И укажем флаг -i, который означает интерактивность, то есть будет показан диалог, завершить ли процесс.
В терминале нужно нажать y, чтобы подтвердить действия для каждого процесса:
Теперь нужно выполнить следующую команду, которая переконфигурирует пакетный менеджер:
Если после этих действий ошибка осталась, то удалите ещё файл блокировки:
После чего снова выполняем:
Вместо /var/lib/dpkg/lock вы можете подставить /var/lib/apt/lists/lock и выполнить те же самые команды.
В крайнем случае, если лень делать удаление файлов блокировки и завершение процессов, то просто перезагрузите компьютер. После перезагрузки скорее всего придется выполнить команду (если установка какого-то приложения не была завершена до конца):
Как исправить `Не удалось получить блокировку /var/lib/dpkg/lock – открыто (11 Ресурс временно недоступен)` Ошибки
В последнее время я получаю много ошибок “Could not get lock /var/lib/dpkg/lock”, когда “Could not get lock /var/lib/dpkg/lock – open (11 Resource temporarily unavailable)” пытаюсь установить или обновить пакеты из командной строки в Ubuntu, поэтому я решил написать статью о том, как можно избавиться от таких проблем.
Вот полное сообщение об ошибке:
E: Не удалось получить блокировку /var/lib/dpkg/lock – открыто (11 Ресурс временно недоступен)
E: Невозможно заблокировать каталог администрирования (/var/lib/dpkg/), его использует другой процесс?
Для более новых версий Ubuntu это сообщение изменилось, и теперь оно показывает, какой процесс удерживает “/var/lib/dpkg/lock-frontend”, примерно вот так:
Как и говорится в сообщении, это может произойти, если другой процесс использует /var/lib/dpkg/lock. Поэтому первое что нужно сделать, если вы столкнулись с этой ошибкой, это убедиться, что вы закрыли менеджеры пакетов, такие как Synaptic и т.д. Также проверьте, нет ли у вас других открытых терминалов, которые в данный момент выполняют процедуру установки / обновления, и дождитесь завершения этих процессов.
Если вы используете более новую версию Ubuntu, сообщение само подскажет вам, какой процесс удерживает “/var/lib/dpkg/lock” / “/var/lib/dpkg/lock-frontend”.
Если ни один процесс не использует /var/lib/dpkg/lock, следующим шагом будет… ожидание. В некоторых случаях этого достаточно для устранения ошибок “Could not get lock /var/lib/dpkg/lock” и “Could not get lock /var/lib/dpkg/lock-frontend”.
Другой потенциальный способ обойти эту проблему – перезагрузить систему и посмотреть, будет ли она по-прежнему возникать.
Однако бывают случаи, когда вышеупомянутых решений может быть недостаточно. Для таких случаев вот что вы можете сделать.
Используйте это только в том случае, если ничто другое не помогло! Использование приведенных ниже команд может привести к поломке пакетов / повреждению. Используйте их на свой страх и риск!
Если ничего не помогло (по моему опыту, это обычно происходит, если система была принудительно выключена или перезагружена во время установки или обновления пакетов, например, из-за отключения электричества), вы можете удалить файл apt lock/lock-frontend и посмотреть, устранит ли это проблему на вашей системе Ubuntu / Debian / Linux Mint (и любой системе, использующей APT):
Если вы все еще получаете ошибки о блокировке кэша apt (/var/cache/apt/archives/lock) или блокировке dpkg (/var/lib/dpkg/lock), вы можете удалить их:
После этого может потребоваться переконфигурация пакетов, а также исправление любых потенциально неработающих пакетов:
Надеюсь, после выполнения этих команд вы перестанете получать ошибки “Could not get lock /var/lib/dpkg/lock – open (11 Resource temporarily unavailable)” и “Could not get lock /var/lib/dpkg/lock-frontend – open (11 Resource temporarily unavailable)”.
Но если и это не помогло, можно попробовать ввести в терминале следующую команду
Обычно, мне это помогает.
Одной из основных причин повторного возникновения этой ошибки является то, что Ubuntu по умолчанию включает автоматическое обновление, и либо обновление находится в процессе, когда вы видите эту ошибку (в этом случае вам следует подождать, пока обновление не будет выполнено успешно!), либо обновление не удалось, и в этом случае вы остаетесь с этой ошибкой, пока не исправите ее.
Надеюсь статья была полезной? И если это так, не забудьте поделиться ею в социальных сетях.
Пакеты (программы) в Linux можно устанавливать и обновлять с использованием графического интерфейса, либо с помощью утилит командной строки.
Иногда при использовании утилитой apt (консольного менеджера пакетов), например, при обновлении информации о пакетах, либо про попытке установить новый пакет, возникает примерно следующая ошибка:

Ошибка довольно раздражающая, она может возникнуть сразу после загрузки системы или в любое произвольное время.
На некоторых сайтах советуют удалить файлы блокировки, например, /var/lib/apt/lists/lock, но не торопитесь это делать! Это может привести к необходимости затем исправлять ошибки с пакетами программ. Чтобы разобраться, из-за чего это происходит, а также правильно исправить эту ошибку, давайте изучим механизм её возникновения.
Её причиной является то, что одновременно запущено два экземпляра apt. Дело в том, что когда программа apt начинает свою работу, она создаёт пару файлов блокировки (один из них /var/lib/apt/lists/lock). При каждом своём запуске apt обращается к этим файлам – и если они уже присутствуют, значит ранее был запущен другой экземпляр apt. Чтобы не внести беспорядок в пакетах и не навредить системе, второй запущенный экземпляр apt останавливает свою работу и выводит показанное выше сообщение об ошибке.
Вряд ли вы сами запустили в двух разных окнах программу apt. Дело в том, что у apt имеется свой демон (фоновый процесс), который в некоторых дистрибутивах установлен на автоматическое выполнение. Т.е. чаще всего вы сталкиваетесь с этой ошибкой в тот момент, когда apt выполняет свои фоновые процессы. Это не является большой редкостью, поскольку работа демона apt может быть продолжительной, например, когда нужно скачать большое количество обновлений, а Интернет-подключение медленное.
Итак, первый способ исправить ошибку очевиден – не нужно ничего делать, просто дождитесь, когда фоновый процесс apt сам завершит свою работу. В результате он сам скачает/обновит новые пакеты.
Как отключить автоматический запуск службы apt
Тем не менее, ситуацию с apt многие пользователи, и я в том числе, могут найти раздражающей: мы не можем воспользоваться apt, в том числе установить нужный пакет в тот момент, когда нам это нужно и, возможно, нет времени дожидаться, пока apt завершит свою работу.
Чтобы увидеть, какие службы apt присутствуют в системе, выполните команду:

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

Скорее всего, это службы apt-daily-upgrade.timer и apt-daily.timer, чтобы отключить их автоматический запуск при старте системы, выполните команды:
Отключение unattended-upgrades
Кроме автоматического запуска apt, в системах на базе Debian имеются включенные по умолчанию unattended-upgrades – те же самые автоматические обновления.
Из описания данного пакета непонятно, автоматически устанавливаются только критические обновления, связанные с безопасностью, или все.
Для изменения этих настроек можно отредактировать файл /etc/apt/apt.conf.d/20auto-upgrades, в нём имеются следующие строки:
Первая отвечает за обновление списка пакетов, а вторая – за обновления самих пакетов в системе. Этот файл можно изменить вручную (чтобы остановить автоматическое обновление, вместо 1 впишите 0) либо запустить конфигуратор:


Что характерно, в Kali Linux по умолчанию отключены автоматические службы apt как и вообще все сетевые службы, которые так или иначе используют доступ в сеть, но почему-то включены unattended-upgrades – либо авторы известного дистрибутива забыли о них, либо считают эти обновления важными.
Отключение автоматической загрузки обновлений программ в GNOME 3
Но даже это ещё не всё! По-прежнему ваш компьютер может автоматически скачивать обновления. Если у вас GNOME 3, то центр программного обеспечения GNOME скорее всего настроен на автоматическую загрузку пакетов. После загрузки в области уведомлений будет показано сообщение, что имеются обновления системы. Эта настройка по умолчанию включена даже в Kali Linux. Чтобы получить текущий статус этой настройки выполните команду:
Если там будет true, значит автоматическая загрузка обновлений включена.
Чтобы её отключить выполните:
Как обновить Linux в командной строке
С одной стороны, отключение автоматических обновлений и скачивание новых файлов пакетов навсегда избавит вас от ошибки «E: Невозможно заблокировать каталог /var/lib/apt/lists/» и других подобных, но при этом вам нужно будет самостоятельно выполнять обновление и очистку пакетов.
Для полного обновления системы выполняйте:
А для очистки пакетов используются команды:
Аварийное завершение работы во время обновления системы или установки программ
Если рассматриваемая ошибка была вызвана тем, что система была выключена во время обновления, то для её исправления нужно выполнить:
Скорее всего, чтобы вновь появилась возможность использовать apt понадобиться выполнить следующую команду, для исправления проблем:
Заключение
Если вы постоянно используете apt в командной строке, то вряд ли нужна автоматическая служба apt. Если же вы выполняете какую-то инструкцию и случайно столкнулись с описанной ошибкой, то, наверное, правильнее не удалять демон apt, а просто дождаться когда он корректно завершит свою работу.
[РЕШЕНО] Ошибка при выполнении apt: E: Не удалось получить доступ к файлу блокировки.
Сегодня в статье рассмотрим, как можно избавиться от надписи в командной строке:
При выполнении в Ubuntu команды вида:
в терминале появляется ошибка:
Сообщение об ошибке может немного отличаться в зависимости от различных условий. Например, могут появляться следующие ошибки:
Как исправить данную ошибку.
Обычно существует две основные причины появления, описанных выше ошибок:
Способ первый
Сначала нужно проверить, что уже не запущен другой экземпляр программы apt-get (apt). Выполним следующую команду, чтобы проверить есть ли apt в списке запущенных процессов:
Вывод команды может быть следующим:
В первой строке мы видим, что уже есть работающий экземпляр программы apt-get, который имеет PID (идентификатор) 9425.
После выполнения данной команды, процесс с идентификатором 9425 завершится.
Можно воспользоваться еще одним простым способом — это завершить все экземпляры программ apt и apt-get сразу. Для этого можно выполнить команду:
Способ второй
Если первый способ вам не помог, то рассмотрим еще один способ решения проблемы. Обычно он используется, когда нет работающих экземпляров программ apt или apt-get, а значит предыдущее их выполнение завершилось аварийно, и файлы блокировки остались закрытыми.
Нам нужно удалить все файлы блокировки. Для этого выполняем команды:
После этого нужно выполнить переконфигурацию (донастройку) пакетов:
Заключение
Мы рассмотрели два способа решения ошибок, связанных с доступом к файлу блокировки dpkg. Как правило, эти способы помогают в решении.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


