Иногда при запуске утилиты apt
или apt-get
вы можете получить ошибку в терминале:
E: Could not get lock /var/lib/dpkg/lock – open (11: Resource temporarily unavailable)
Формулировка ошибки и путь к lock-файлу могут отличаться в зависимости от конкретного случая, но если речь идет о невозможности заблокировать файл dpkg
, все они будут устраняться схожими методами.
В целом, ошибка связана с тем, что файл менеджера пакетов dpkg
уже заблокирован — то есть, уже выполняется какой-то процесс, который его задействует, либо же выполнение процесса было завершено некорректно, из-за чего мы сейчас получаем ошибку.
В первую очередь рекомендуем подождать несколько минут и попробовать запустить apt
снова. Вполне возможно, что выполняемый процесс через пару минут автоматически завершится, и вы сможете продолжить работу.
Если же проблема сохраняется, ее можно решить следующими способами.
Способ 1. Завершить процесс принудительно
Выполните команду ниже, чтобы найти все запущенные экземпляры утилиты apt
:
ps aux | grep -i apt
В выводе отобразятся активные процессы, а также их ID (второй столбец).
Если в выводе будет
apt.systemd.daily update
, рекомендуем не завершать такой процесс. Это утилита автоматической проверки и установки обновлений — просто дождитесь завершения ее работы.
Завершить ненужный процесс можно командой:
sudo kill -9 ID_процесса
Другой вариант — завершить все процессы утилит apt
и apt-get
сразу, не проверяя конкретные процессы. Это можно сделать командой:
sudo killall apt apt-get
Способ 2. Удалить файлы блокировки
Если предыдущий способ не помог, вероятнее всего, проблема связана не с активными процессами apt
или apt-get
, а с некорректным завершением одного из процессов ранее.
Сначала воспользуемся командой lsof
, чтобы посмотреть, каким процессом используется lock-файл.
Последовательно выполните команды:
sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/dpkg/lock-frontend
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock
В ответ команда может не выдать ничего или выдать одно или несколько чисел — это ID процессов. Завершите их, указывая полученные ID:
sudo kill -9 ID_процесса
Затем удалите lock-файлы:
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
При удалении вы можете получать ошибки вида «Нет такого файла или каталога» — их можно просто проигнорировать.
В завершение переконфигурируйте пакеты с помощью команды:
sudo dpkg --configure -a
Попробуйте снова запустить apt
или apt-get
— все должно работать корректно.
Недавно, устанавливая приложение с помощью команды apt в Ubuntu, я столкнулся со следующей ошибкой:
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?
В некоторых случаях подобные ошибки возникают при использовании Центра программного обеспечения.
И в целом, они напоминают еще одну распространенную ошибку:
Unable to lock directory/var/cache/apt/archives/ и, как говорится «подобное лечится подобно», а похожие ошибки и фиксятся похоже.
Как исправить ошибку «Unable to lock the administration directory (/var/lib/dpkg/)»
Вы видите эту ошибку, потому что какая-то другая программа обновляет Ubuntu прямо сейчас. Когда команда или приложение обновляют систему или устанавливают новое программное обеспечение, они блокируют файл dpkg (менеджер пакетов Debian).
Эта блокировка выполняется для того, чтобы два процесса не изменяли содержимое файла dpkgодновременно, так как это может привести к неоправданному риску поломки всей системы.
Давайте посмотрим, что мы можем сделать, чтобы решить проблему «unable to lock the administrator directory».
Метод 0:
Первое, что следует сделать, это проверить, может ли какая-то другая программа запускать обновление системы или устанавливать программу.
Если вы используете командную строку, проверьте, не запускает ли одно из следующих приложений: Software Center, Software Updater, менеджер пакетов Synaptic или Gdebi, какое-нибудь обновление / установку. В случае положительного ответа – просто подождите, пока программа завершит выполнение.
Если ни одно из этих приложений не запущено, проверьте все открытые окна терминала и посмотрите, не запустили ли вы самостоятельно какие-либо обновление или установки. Если да, дождитесь завершения этих процессов. (Совет странный, но помните, что все мы бываем невнимательны))
Если ничего из вышеперечисленного не происходит, проверьте, какой еще процесс выполняет команду apt (менеджер пакетов для работы с программным обеспечением). Используйте эту команду:
ps aux | grep -i apt
В моем случае команда вернула такой результат:
abhishek@nuc:~$ ps aux | grep -i apt root 1464 0.0 0.0 4624 772 ? Ss 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update root 1484 0.0 0.0 4624 1676 ? S 19:08 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update _apt 2836 0.8 0.1 96912 9432 ? S 19:09 0:03 /usr/lib/apt/methods/http abhishek 6172 0.0 0.0 21532 1152 pts/1 S+ 19:16 0:00 grep --color=auto -i apt
Если вы, как и я, видите, что apt используется такой программой, как apt.systemd.daily update, вам повезло, мой дорогой читатель.
Это «демон», который работает в фоновом режиме и автоматически проверяет наличие обновлений системы при запуске системы.
В Ubuntu 18.04 и более поздних версиях он может даже попытаться загрузить и установить важные обновления безопасности самостоятельно. По крайней мере, такие опции я увидел в дефолтных настройках в инструменте «Программное обеспечение и обновления» на рабочем столе Ubuntu.
Если вы находитесь на сервере Ubuntu, вы можете проверить, включены ли у вас автоматические обновления, проверив содержимое файла /etc/apt/apt.conf.d/20auto-upgrades.
Итак, если вы выяснили, что apt.systemd.daily использует процесс apt, все, что вам нужно сделать, это подождать несколько минут. Когда автоматическое обновление завершится, вы сможете установить свое программное обеспечение как обычно.
В качестве постоянного решения вы можете полностью отключить как автоматическую проверку наличия обновлений, так и сами автообновления, однако я бы не советовал, из соображений безопасности.
Это был самый простой и легко побеждаемый сценарий. К сожалению, он не единственный возможный. Если apt использует какая-то другая программа, то и решение будет другим.
Метод 1:
Используйте командную строку Linux, чтобы найти и остановить запущенный процесс. Для этого используйте команду ниже:
ps aux | grep -i apt
Эта команда покажет вам идентификатор процесса, выполняющего apt или apt-get. В приведенном ниже примере идентификатор процесса — 7343. Не обращайте внимания на последнюю строку, содержащую «grep –color = auto».
Вы можете использовать идентификатор процесса, чтобы завершить его, отправив команду SIGTERM. Замените <process_id> числом, которое вы получили в выводе предыдущей команды.
sudo kill < process_id >
Проверьте, был ли процесс остановлен, запустив команду «ps aux | grep -i apt» еще раз. Если он все еще работает, принудительно уничтожьте его сигналом SIGKILL:
sudo kill -9 < process_id >
Другой, более простой способ — использовать команду killall, она убьет все экземпляры запущенной программы:
sudo killall apt apt-get
Метод 2:
Вышеупомянутый метод решит проблему в большинстве случаев. Но мой случай, по закону подлости, был немного другим. Я обновлял свою систему и случайно закрыл терминал. По этой причине не было процессов, использующих apt, но система все равно выдавала мне ошибку.
В таком случае основной причиной является файл блокировки. Как упоминалось ранее, файлы блокировки необходимы для предотвращения использования одних и тех же данных двумя или более процессами. Когда выполняются команды apt или apt-get, они создают файлы блокировки в нескольких местах. Если предыдущая команда apt не была завершена должным образом, файлы блокировки не удаляются и, следовательно, они будут блокировать любые новые вызовы команд apt-get или apt.
Чтобы решить эту проблему, все, что вам нужно сделать, это удалить файлы блокировки. Но, прежде чем вы это сделаете, было бы неплохо остановить любой процесс, использующий файлы блокировки.
Используйте команду lsof, чтобы получить идентификатор процесса, использующего файлы блокировки. Проверьте ошибку и посмотрите, на какие файлы блокировки она жалуется, и получите идентификатор процессов, содержащих эти файлы блокировки.
Последовательно запустите эти команды:
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
Теперь, если вы запустите команду sudo apt update, все должно работать как надо.
Устранение неполадки: «Unable to acquire the dpkg frontend lock»
Если вы видите такую ошибку:
abhishek@nuc:~$ sudo apt install grub-customizer E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Вы должны выяснить, какой процесс удерживает интерфейс блокировки, используя команду lsof, как обсуждалось в предыдущих разделах:
sudo lsof /var/lib/dpkg/lock-frontend
В моем случае команда вернула:
abhishek@nuc:~$ sudo lsof /var/lib/dpkg/lock-frontend lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME unattende 2823 root 5uW REG 8,2 0 145221 /var/lib/dpkg/lock-frontend
Если вы видите значение «unattende» в столбце COMMAND, это значит, что выполняются автоматические обновления безопасности. Вам следует дождаться завершения процессов. По сути, это то, что я описывал в методе 0, но вы могли его пропустить.
Если значение COMMAND какое-то другое, вы можете убить процесс, а затем удалить файл блокировки. Идентификатор процесса вы найдете в столбце PID. Используйте этот PID, чтобы убить процесс. После этого удалите файл блокировки и запустите команду обновления, чтобы проверить, исправили ли вы проблему.
sudo kill -9 PID sudo rm /var/lib/dpkg/lock-frontend sudo apt update
Устранение неполадки: «dpkg: error: dpkg frontend is locked by another process»
Если вы встретите ошибку «интерфейс dpkg заблокирован другим процессом» в процессе пошагового выполнения метода 2, вам понадобится выполнить еще одно действие.
Во-первых, узнайте идентификатор процесса, хранящего файл блокировки.
sudo lsof /var/lib/dpkg/lock-frontend
Эта команда предоставит вам подробную информацию о процессах и программах, использующих файлы блокировки. Используйте идентификатор процесса, чтобы убить эту программу:
sudo kill -9 PID
Теперь вы можете снять блокировку и перенастроить dpkg:
sudo rm /var/lib/dpkg/lock-frontend sudo dpkg --configure -a
Помогла ли вам статья? Какой из методов помог в вашем случае?
Надеюсь, этот небольшой пост помог вам исправить ошибки типа «Не удалось получить lock / var / lib / dpkg / lock». Если да – обязательно поделитесь в комментах, какой метод помог именно вам.
Если ни один из перечисленных способов так и не помог вам справиться с проблемой, опять же – дайте знать. Я постараюсь вам помочь.
Любые другие предложения также приветствуются в комментариях.
Описание проблемы. Ошибка
При выполнении в Ubuntu команды вида:
sudo apt install someprogram
в терминале появляется ошибка:
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
Описание проблемы. Ошибка
При выполнении в Ubuntu команды вида:
sudo apt install someprogram
в терминале появляется ошибка:
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
В первой строке мы видим, что уже есть работающий экземпляр программы 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
sudo rm /var/lib/dpkg/lock-frontend
Если при выполнении каких-нибудь из этих команд появится сообщение: rm: невозможно удалить ’/var/../lock’: Нет такого файла или каталога, это нормально, не обращайте на него внимания.
После этого нужно выполнить переконфигурацию (донастройку) пакетов:
sudo dpkg --configure -a
Заключение
Мы рассмотрели два способа решения ошибок, связанных с доступом к файлу блокировки dpkg. Как правило, эти способы помогают. Если у вас остались какие-либо вопросы, оставляйте их в комментариях.
Unable to acquire the dpkg frontend lock error is the most common error that happens with Linux systems, this can be solved easily. This error is being displayed because another programme is attempting to update Ubuntu. A command or application locks the dpkg file when upgrading the system or installing new software (Debian package manager).
The error “unable to acquire the dpkg frontend lock” happened due to various reasons and can be solved by understanding the cause of the problem.
We can run the following command to check the error log and take a look at the process ID and error message.
$ sudo lsof /var/lib/dpkg/lock-frontend
frontend-lock-log
So here are a few common causes and their fixes:-
1. Unprivileged access
sudo-error
$ apt install nano E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
In this case, the user doesn’t have access to run the particular command without having root access so users must use sudo to run the command before running it.
2. Broken package
dpkg: error: his package provides frequent translation updates.': version string has embedded spaces E: Sub-process /usr/bin/dpkg returned an error code (2)
sometimes when we try to install the app, the app can be broken due to connection loss and various other reasons, in this case, we can run the following command to fix this:-
$ sudo dpkg --configure -a or $ sudo apt install -f
3. Installing an app from unlisted repositories or missing repositories
add=ppa
$ sudo apt install grub-customizer E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
installed
Due to a typo or unavailability of apps in the repository it happens, in this case, you have to check the app ppa repository and add to the package repository, see in this thread for more details.
4. Frontend is locked by another process
Check if any process is running and using apt/dpkg
$ ps aux | grep -i apt
this is a dpkg error and finding the process id using the log command and by killing that PID will fix the issue
$ sudo kill -9 <PID> or $ sudo killall program_name
kill-example
5. Delete the lock file to fix the issue
This is a brute force method and you should use it carefully, although this also fixes the issue but system can be broken if you use this without understanding the error. Often restarting system can also fix the error so you must try restart before trying this step.
$ sudo rm /var/lib/apt/lists/lock $ sudo rm /var/cache/apt/archives/lock $ sudo rm /var/lib/dpkg/lock
delete-lock-file
I hope this article is helpful, give a like, happy learning.
Last Updated :
23 Nov, 2022
Like Article
Save Article
frontend-lock-log
So here are a few common causes and their fixes:-
1. Unprivileged access
sudo-error
$ apt install nano E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
In this case, the user doesn’t have access to run the particular command without having root access so users must use sudo to run the command before running it.
2. Broken package
dpkg: error: his package provides frequent translation updates.': version string has embedded spaces E: Sub-process /usr/bin/dpkg returned an error code (2)
sometimes when we try to install the app, the app can be broken due to connection loss and various other reasons, in this case, we can run the following command to fix this:-
$ sudo dpkg --configure -a or $ sudo apt install -f
3. Installing an app from unlisted repositories or missing repositories
add=ppa
$ sudo apt install grub-customizer E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
installed
Due to a typo or unavailability of apps in the repository it happens, in this case, you have to check the app ppa repository and add to the package repository, see in this thread for more details.
4. Frontend is locked by another process
Check if any process is running and using apt/dpkg
$ ps aux | grep -i apt
this is a dpkg error and finding the process id using the log command and by killing that PID will fix the issue
$ sudo kill -9 <PID> or $ sudo killall program_name
kill-example
5. Delete the lock file to fix the issue
This is a brute force method and you should use it carefully, although this also fixes the issue but system can be broken if you use this without understanding the error. Often restarting system can also fix the error so you must try restart before trying this step.
$ sudo rm /var/lib/apt/lists/lock $ sudo rm /var/cache/apt/archives/lock $ sudo rm /var/lib/dpkg/lock
delete-lock-file
I hope this article is helpful, give a like, happy learning.
Last Updated :
23 Nov, 2022
Like Article
Save Article