Ошибка Сould not open lock file в Кали Линукс не даёт работать с обновлением из терминала.
Работа с ошибкой could not open lock file /var/lib/dpkg/lock некоторых пользователей вводит в смущение прежде всего фактом появления в учётной записи root. Наиболее вероятные симптомы – ошибка в терминале после попытки обновиться (apt-get update). В том числе с префиксом sudo. При этом ошибка появляется повсюду, где хоть что-то завязано с менеджером apt-get. На Ubuntu ли, в Raspberry Pi или в Кали Линукс. Однако часто решение лежит на поверхности. Наиболее типичное проявление ошибки – попытке ввести двойную в одной строчке команду на обновление с последующей попыткой обновления установить. Многие эту команду запускают уже в начале сеанса с терминала в виде:
sudo apt-get update && apt-get upgrade -y
Обратите внимание, что вторая часть команды правами на действие не обладает. И авторизованных прав на файл /var/lib/dpkg/lock в терминале не выдано. Так что логичным бы было написание команды в виде
sudo apt-get update && sudo apt-get upgrade -y
Или же по отдельности в два захода с вводом после первой команды пароля к root-учётке:
Если прокатило, считайте вопрос закрытым и помните о правильном присвоении прав на действие для каждого из процессов.
Что-то уже обновляется…
Есть смысл проверить, не устанавливаются ли какие-то обновления прямо сейчас. Или какой процесс тормозит работу с искомым файлом. В терминале набираем
ps aux | grep -i apt
А затем тут же:
sudo kill ID_номер_процесса
Проверьте предыдущей командой не вернулся ли процесс. Если ID не меняется, затормозите все процессы, связанные с обновлением
sudo killall apt apt-get
Сould not open lock file /var/”путь”/lock: удаляйте файлы
Для применяющих curl, wget и другие команды при дискретном скачивании файлов им всем (командам) также должен предварять префикс sudo. В любом случае, если добавление префикса работы от root не помогает, вы всегда можете взглянуть на процессы, которые, вероятно, вмешиваются в работу команд обновления:
sudo lsof /var/lib/dpkg/lock sudo lsof /var/lib/apt/lists/lock sudo lsof /var/cache/apt/archives/lock
Вполне возможно, что терминал ничего не вернёт. Или вернёт какое-то единичное число из процессов. Такая проблема возникает, когда пользователь во время работы apt просто случайно закрывает терминал. Как итог – ни один из процессов от имени apt не запущен, а ошибка Сould not open lock file вылезает. В общем, просто вслепую удаляем файлы. Это безопасно:
sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
А теперь реконфигурируем пакеты:
sudo dpkg --configure -a
Теперь попробуйте запустить:
sudo apt update
Должно заработать. Всем успехов.