Сегодня в статье рассмотрим, как можно избавиться от надписи в командной строке:
E: Не удалось получить доступ к файлу блокировки .....
При выполнении в Ubuntu команды вида:
sudo apt install имя_программы
в терминале появляется ошибка:
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock-frontend - open (11: Ресурс временно недоступен)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Ошибка может появляться не только при выполнении apt install
, но и при любых других действиях с apt
или apt-get
.
Сообщение об ошибке может немного отличаться в зависимости от различных условий. Например, могут появляться следующие ошибки:
E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
E: Could not get lock /var/lib/apt/lists/lock – open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Как исправить данную ошибку.
Данные ошибки появляются, когда программа apt-get (apt) не может получить доступ к файлу блокировки /var/lib/dpkg/lock*
. Данный файл используется, чтобы запретить одновременное выполнение операций, связанных с управлением пакетами в системе, так как при одновременном изменении данных о пакетах будет нарушена целостность «пакетной базы».
Обычно существует две основные причины появления, описанных выше ошибок:
- В данный момент уже выполняется экземпляр программы apt-get (apt).
- Предыдущий вызов apt-get (apt) завершился некорректно.
Способ первый
Сначала нужно проверить, что уже не запущен другой экземпляр программы apt-get (apt). Выполним следующую команду, чтобы проверить есть ли apt в списке запущенных процессов:
ps aux | grep -i apt
Вывод команды может быть следующим:
root 9425 0.0 0.0 79516 3752 pts/1 S+ 10:31 0:00 sudo apt-get install inkscape
pingvin+ 9456 0.0 0.0 38892 944 pts/0 S+ 10:32 0:00 grep --color=auto -i apt lock dpkg завершение apt
В первой строке мы видим, что уже есть работающий экземпляр программы apt-get, который имеет PID (идентификатор) 9425.
Вторая строка относится к нашей команде grep
, которую мы запустили с аргументом apt, поэтому она вывела саму себя. Итак, нас интересует только первая строка.
Если вы уверены, что не запускали программу apt-get сами, или она не запущена в фоновом режиме, например, выполняется автоматическое обновление системы, то нужно принудительно завершить ее выполнение. Для этого воспользуемся командой kill −9
. Команде нужно указать числовой идентификатор процесса. В нашем случае это 9425. Выполняем команду:
sudo kill -9 9425
После выполнения данной команды, процесс с идентификатором 9425 завершится.
Можно воспользоваться еще одним простым способом — это завершить все экземпляры программ apt и apt-get сразу. Для этого можно выполнить команду:
sudo killall apt apt-get
Способ второй
Если первый способ вам не помог, то рассмотрим еще один способ решения проблемы. Обычно он используется, когда нет работающих экземпляров программ apt или apt-get, а значит предыдущее их выполнение завершилось аварийно, и файлы блокировки остались закрытыми.
Нам нужно удалить все файлы блокировки. Для этого выполняем команды:
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Если при выполнении каких-нибудь из этих команд появится сообщение: rm: невозможно удалить ’/var/../lock’: Нет такого файла или каталога
, это нормально, не обращайте на него внимания.
После этого нужно выполнить переконфигурацию (донастройку) пакетов:
sudo dpkg --configure -a
Заключение
Мы рассмотрели два способа решения ошибок, связанных с доступом к файлу блокировки dpkg. Как правило, эти способы помогают в решении.
[endtxt]