Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Вы пытаетесь установить программу или обновить систему, а в ответ — грозная ошибка о блокировке каталога? Не паникуйте! Эта проблема знакома каждому пользователю Ubuntu и Debian.

Система просто защищает себя от одновременной работы нескольких установщиков. Чаще всего это означает, что в фоне уже работает другой процесс apt или обновление.

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

Все методы проверены на практике и занимают буквально пару минут. Не позволяйте одной строке в терминале остановить вашу работу!

Готовы навсегда решить эту проблему? Переходите к статье и выбирайте самый быстрый способ для вашей ситуации.


При использовании утилиты apt для установки или обновления программного обеспечения в таких дистрибутивах как Ubuntu и Debian, в терминале можно столкнуться со следующей ошибкой: Unable to lock directory /var/lib/apt/lists.

Данная ошибка очень проста и исправить её не составит труда, но для новых пользователей она может показаться серьезным препятствием. В этой статье будет рассмотрено что означает ошибка Unable to lock directory /var/lib/apt/lists, а также как устранить эту проблему.


Содержание статьи

Что значит эта ошибка

В операционной системе Ubuntu 20.04 получить данную ошибку можно при выполнении таких команд как apt update, apt upgrade или apt install. А полный текст ошибки выглядит вот так:

  • E: Could not get lock /var/lib/apt/lists/lock. It is held by process 4746 (aptd)
  • N: Be aware that removing the lock file is not a solution and may break your system.
  • E: Unable to lock directory /var/lib/apt/lists/

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Так же можно получить следующую ошибку:

Waiting for cache lock: Coud not get lock /var/lib/dpkg/lock-frontend. It is held by process

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

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

Как правило данная ошибка появляется из-за того, что уже запущен другой экземпляр программы apt который или обновляет пакеты операционной системы или устанавливает какие-либо программы. Когда команда apt или графическое приложение для обновления системы обновляют систему или устанавливают новое программное обеспечение, они блокируют файл dpkg (менеджер пакетов в операционных системах семейства Debian).

Эта блокировка выполняется для того, чтобы два процесса не изменяли содержимое файла dpkg одновременно, так как это может привести к неоправданному риску поломки всей системы.

Также данная ошибка может возникать при выполнении автоматических обновлений. За данную опцию отвечает пакет под именем unattended-upgrades который как правило присутствует в большинстве дистрибутивов по умолчанию и запускается автоматически при загрузке операционной системы.

Как исправить Unable to lock the administration directory /var/lib/dpkg

Существует несколько способов решения данной проблемы. Рассмотрим все возможные варианты. Первый способ этой найти запущенный процесс apt и завершить его. Для этого сначала необходимо выполнить команду в терминале:

ps aux | grep -i apt

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Данная команда отобразит идентификатор процесса, выполняющего процесс apt. В приведенном выше примере идентификатор процесса - 28382.

Можно использовать идентификатор процесса, чтобы завершить его. Необходимо заменить идентификатор процесса числом, которое было получено в выводе предыдущей команды. В данном примере это число 28382. Команда будет выглядеть следующем образом:

sudo kill 28382

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Далее необходимо проверить, был ли процесс остановлен, запустив команду ps aux | grep -i apt еще раз. Если процесс все еще работает, его необходимо принудительно уничтожить при помощи команды:

sudo kill -9 28382

Другой, более простой способ - использовать команду killall, она завершит все экземпляры запущенной программы. Для этого необходимо выполнить команду:

sudo killall apt apt-get

Второй способ заключается в удаление файлов блокировки. Но, прежде чем удалять данные файлы, необходимо остановить процессы, использующие файлы блокировки. Для этого необходимо выполнить одну из следующих команд ориентируясь на ту, которая вернет число:

sudo lsof /var/lib/dpkg/lock

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

sudo lsof /var/lib/apt/lists/lock

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

sudo lsof /var/cache/apt/archives/lock

Завис apt в Ubuntu? Исправляем ошибку блокировки пакетного менеджера за 2 минуты

Возможно, команды ничего не будут возвращать или вернут только одно число. Полученное число из вывода необходимо использовать чтобы завершить процесс (необходимо заменить process_id числом, полученным из приведенных выше команд):

sudo kill -9 process_id

И только после этого можно безопасно удалить файлы блокировки, используя следующие команды:

sudo rm /var/lib/apt/lists/lock

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

После удаления файлов блокировки необходимо переконфигурировать пакеты при помощи команды:

sudo dpkg --configure -a

Выводы

В данной статье были рассмотрены два способа решения ошибки Unable to lock directory /var/lib/apt/lists которая может вызвать затруднения у новых пользователей. Но теперь вы знаете почему она появляется и как с ней бороться. Если у вас остались вопросы, пишите в комментариях!

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив