При использовании утилиты apt для установки или обновления программного обеспечения в таких дистрибутивах как Ubuntu и Debian, в терминале можно столкнуться со следующей ошибкой: Unable to lock directory /var/lib/apt/lists.
Данная ошибка очень проста и исправить её не составит труда, но для новых пользователей она может показаться серьезным препятствием. В этой статье будет рассмотрено что означает ошибка Unable to lock directory /var/lib/apt/lists, а также как устранить эту проблему.
Содержание статьи
- Что значит эта ошибка
- Как исправить Unable to lock the administration directory /var/lib/dpkg
- Выводы
Что значит эта ошибка
В операционной системе 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/
Так же можно получить следующую ошибку:
Waiting for cache lock: Coud not get lock /var/lib/dpkg/lock-frontend. It is held by process
Если дословно перевести значение данной ошибки, то утилита сообщает что не может создать файл блокировки /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. В приведенном выше примере идентификатор процесса - 28382.
Можно использовать идентификатор процесса, чтобы завершить его. Необходимо заменить идентификатор процесса числом, которое было получено в выводе предыдущей команды. В данном примере это число 28382. Команда будет выглядеть следующем образом:
sudo kill 28382
Далее необходимо проверить, был ли процесс остановлен, запустив команду ps aux | grep -i apt еще раз. Если процесс все еще работает, его необходимо принудительно уничтожить при помощи команды:
sudo kill -9 28382
Другой, более простой способ - использовать команду killall, она завершит все экземпляры запущенной программы. Для этого необходимо выполнить команду:
sudo killall apt apt-get
Второй способ заключается в удаление файлов блокировки. Но, прежде чем удалять данные файлы, необходимо остановить процессы, использующие файлы блокировки. Для этого необходимо выполнить одну из следующих команд ориентируясь на ту, которая вернет число:
sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
Возможно, команды ничего не будут возвращать или вернут только одно число. Полученное число из вывода необходимо использовать чтобы завершить процесс (необходимо заменить 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 которая может вызвать затруднения у новых пользователей. Но теперь вы знаете почему она появляется и как с ней бороться. Если у вас остались вопросы, пишите в комментариях!
sudo fuser -cuk /var/lib/dpkg/lock - за неправильные советы можно понести уголовную ответственность у меня комп постоянно стал перезагружаться после ввода такой строки
man fuser
Прежде чем выполнять советы из интернета желательно разобраться в вопросе и прочитать официальное руководство.Что нисколько не оправдывает ваших действий. И тот факт, что вместо того, чтобы исправить очевидно некорректное описание опасной для системы команды, вы выдаёте в комментариях нечто вроде "сам дурак", говорит о нижайшем уровне сознательности. Если, разумеется, целью статьи изначально не было вредительство
Хм. Действительно. Прошу прощения, исправил команду. Видимо, это баг, эта опция не должна ронять оболочку.