Не удается заблокировать каталог администрирования (/var/lib/dpkg/), другой процесс использует его?
Я получаю эту ошибку при попытке использовать 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?
Как я могу это исправить?
27 ответов
Это должно быть использовано в качестве крайней меры. Если вы используете это небрежно, вы можете получить сломанную систему. Пожалуйста, попробуйте другие ответы, прежде чем делать это.
Вы можете удалить файл блокировки с помощью следующей команды:
sudo rm /var/lib/apt/lists/lock
Вам также может понадобиться удалить файл блокировки в каталоге кеша
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
После этого попробуйте снова открыть Synaptic.
Я вижу, почти все ответы рекомендуют снять блокировку. Я не рекомендую делать это в качестве первой меры; может быть, если нет альтернативы. Блокировка устанавливается при запуске apt-процесса и удаляется после его завершения. Если есть блокировка без видимого процесса, это может означать, что процесс застрял по какой-то причине.
Если вы попытаетесь
ps aux | grep [a]pt
или же
pgrep -a apt
который будет ловить процессы, содержащие слово apt
, по крайней мере. Если вы видите apt-get
процесс или aptitude
процесс, который выглядит застрявшим, вы можете попробовать
kill processnumber
и если это не сработает, попробуйте
kill -9 processnumber
Это должно убить процесс и может снять блокировку. Убийство apt
или же aptitude
Процесс безвреден, если только он не находится в середине установки пакета. В любом случае, если процесс застрял, у вас, вероятно, нет другого выбора, кроме как убить его.
Убийство dpkg
process directly, if present, is not a good idea, because if dpkg
is active, it is probably manipulating the package database, and killing it may leave the package database in an inconsistent state; ie corrupted.
Killing an apt-get
или же aptitude
process is in general much safer.
Удалить свой /var/lib/dpkg/lock
реконфигурация файла и принудительного пакета.
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
Это должно работать после этого.
Наиболее вероятный способ поразить это:
- загрузите Ubuntu
- начать терминал
- тип
sudo apt-get install whatever
и командная строка apt
пересекается с update-manager
автоматический опрос.
Так что если вы попробуете снова через несколько минут, это должно исправить.
Вы получите это сообщение, если забудете использовать sudo
при выполнении команды apt.
В противном случае это признак того, что что-то еще устанавливает или удаляет программное обеспечение и заблокировало базу данных apt во время выполнения действий. Программы, которые могут сделать это:
- Центр программного обеспечения
- Диспетчер обновлений
- Установщик apt link (я думаю, что теперь это проходит через SC)
- Утилиты командной строки apt-get или aptitude.
- Менеджер пакетов Synaptic
ВАЖНО: попробуйте только ниже в качестве крайней меры, так как это может привести к сбою вашей системы. Сначала попытайтесь убить любой работающий экземпляр apt
или же aptitude
как описано в ответе Фахима.
Вы можете принудительно отключить блокировку, удалив файл, но это не рекомендуется без предварительного закрытия программы, которая надежно удерживает блокировку, поскольку вы можете вызвать повреждение или прервать установку (плохо). Команда, предоставленная João, должна закрыть программу, которая удерживает блокировку, а затем снять блокировку, но не защитит вас от прерывания установки:
sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock
И та же команда может быть использована для блокировки кэша apt:
sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Только одна программа может удерживать блокировку. Убедитесь, что вы не используете aptitude, synaptic или adept. Закройте программу и запустите ее снова, она должна работать. Вы можете либо открыть синапс, либо открыть другое окно терминала с запущенным apt-get, либо запустить менеджер обновлений. Проверьте его и посмотрите, работает ли какой-либо из них, если какой-либо из они бегут близко и попробуйте снова.
Попробуйте эту команду в терминале, чтобы найти то, что работает
ps -e | grep -e apt -e adept | grep -v grep
Замечания:
Если это ничего не печатает, введите в терминале следующее, чтобы снять блокировку
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
Теперь вы можете установить любые пакеты.
Пока что лучший способ заставить его работать, не нарушая возможный фоновый запуск установки (как это может произойти, удалив файл блокировки), - это остановить службу с помощью apt:
Ошибка:
# sudo apt-get upgrade
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?`
Решение:
sudo systemctl stop apt-daily.timer
После обновления системы я предлагаю снова включить ее, так как исправление ошибки может быть исправлено с обновлением.
sudo systemctl start apt-daily.timer
Я не проверял, что эта ошибка исправлена после обновления. Я добавлю новый комментарий, как только я подтвердил
Прежде всего мы должны проверить, какой процесс создал файл блокировки, используя lsof
:
sudo lsof /var/lib/dpkg/lock
или в другой ситуации, когда /var/lib/apt/lists/lock
проблематично:
sudo lsof /var/lib/apt/lists/lock
Вывод будет близок к чему-то вроде:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apt-get 12127 root 4uW REG 252,1 0 86 /var/lib/apt/lists/lock
Затем мы должны проверить, что делает запятая, мы можем выяснить это с помощью ps
, pgrep
так далее; команда apt-get
так я бегу
pgrep apt-get -a
-a
Коммутатор выводит полную команду для меня, в моем случае это:
pgrep -a apt-get
12127 apt-get update
мы можем видеть, что он работает update
подкоманда, я мог бы запустить что-то вроде этого:
ps -f 12127
который производит:
UID PID PPID C STIME TTY STAT TIME CMD
root 12127 12126 0 09:39 pts/0 S+ 0:00 apt-get update
В этом случае я бы подождал минуту, пока ресурс освободится, и если через 2 или 3 минуты проблема все еще существует, или команда была чем-то, что меня не заботило, или не было вредно для системы (как это apt-get update
) Я отправляю SIGTERM
к процессу:
sudo kill -15 12127
Это должно сделать работу, Если это не так, я собираюсь отправить SIGINT
на этот раз (это как нажатие CTRL+C):
sudo kill -2 12127
Если это не сработало, мы должны отправить SIGHUP
(kill -1
) и, наконец, если ничего не работает, я просто убиваю процесс:
sudo kill -9 12127
или же
sudo pkill -9 apt-get
Затем я удаляю занятые ресурсы:
sudo rm /var/lib/apt/lists/lock
Эта ошибка может быть вызвана тем, что менеджер обновлений пытается автоматически обновить список пакетов в фоновом режиме, обычно сразу после входа в систему, блокируя каталог.
В этом случае подождите несколько секунд (или больше, если ваше последнее обновление было давно), чтобы оно завершилось, или запустите диспетчер обновлений для проверки состояния.
Не спешите удалять что-либо, это может полностью повредить вашу систему; скорее дождитесь, пока текущая установка или удаление программы завершит свою задачу, и после этого вы получите доступ. Если вы считаете, что в данный момент ничего не устанавливается или не удаляется, просто перезагрузите систему с помощью команды sudo reboot
,
Это произойдет, если у вас есть "Диспетчер обновлений", работающий параллельно для какой-либо проверки обновлений, или установка в процессе установки блокирует. Если вы столкнулись с той же ошибкой без запуска "Менеджера обновлений", вы должны удалить ее из /var/lib/dgkg/lock
что, безусловно, вы не можете сделать это вручную
sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock
работает отлично. Взято из: https://Ask-ubuntu.ru/a/15469/68707
Если у вас установлены обновления безопасности для автоматической установки, это будет происходить часто. Я буквально жду 30 секунд, и это решает проблему. Просто добавьте это на случай, если кто-то еще столкнется с этой проблемой.
В моем случае мне пришлось ждать несколько минут, чтобы снять блокировку (похоже, apt
раньше держал его). Это все произошло сразу после загрузки системы.
У меня была эта проблема много раз. Для меня это почти всегда было вызвано apt-get или некоторым графическим интерфейсом, который вызывал зависание по какой-то причине. Я должен был убить его, который оставил различные замки на месте.
Другие ответы очень полезны для того, чтобы убедиться, что в данный момент обновления не запущены, прежде чем предпринимать какие-либо радикальные действия, такие как удаление файлов блокировки. Однако, если вы уверены, что это не так, у меня обычно работает следующее. Я получил это, прочитав много ответов на такие вопросы, как этот.
В то время как большая часть или все это представлено в других ответах, исправление сводится к нескольким командам.
sudo fuser -vki /var/lib/dpkg/lock
sudo fuser -vki /var/cache/apt/archives/lock
sudo fuser -vki /var/cache/debconf/config.dat
sudo dpkg --configure -a
Используется для разблокировки системы пакетов после того, как какое-либо обновление завершилось или прервалось без завершения каким-либо другим способом. Эти команды должны выполняться в указанном порядке.
Просто sudo rm -f /var/lib/apt/lists/lock
и попробуй еще раз.
apt-fast МОЖЕТ быть ответственным за неправильную разблокировку; это случается иногда, когда вы прерываете apt-get
или же dpkg
тоже.
Я не вижу такого ответа выше, но в Ubuntu 16.04 я также столкнулся с этой проблемой. Причиной было то, что время на моем компьютере было установлено в будущее. (Это потому, что я нахожусь на двойной загрузочной системе Windows+Ubuntu, и я думаю, что я испортил местное время против времени UTC.)
Одна странность заключалась в том, что дата и время заблокированного файла были точной датой и временем запуска программы.
Затем я использовал "fuser", как описано в предыдущих постах, и apt работал, но я получал жалобы о необходимости запуска dpkg -a -reconfigure
, Когда я сделал это, я получил такие ошибки, как:
newline in field name #padding
в таких файлах, как '/var/lib/dpkg/updates/0003'.
Все это было очень странно, поскольку я никогда не видел это прежде. Итак, я подумал, что это симптомы, и изменил мои данные и время вручную. Я знал, что была проблема с датой / временем, когда я вошел в систему, но игнорировал ее. (Раньше он настраивал его автоматически через интернет и NTP).
Затем все вышеперечисленные проблемы были исправлены... Надеюсь, это поможет кому-то еще! Наиболее заметным симптомом, возможно, является дата / время файла блокировки, являющееся точной датой / временем, когда вы пытаетесь выполнить команду.
В моем случае, X разбился, пока apt-get
все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не завис. Все было хорошо, как только процесс закончился.
Проверьте Launcher, чтобы увидеть, если Software Updater
бежит. Если это так, максимизируйте его и посмотрите, что он делает. Если он все еще проверяет, дождитесь его завершения. Когда он завершится, он может сказать, что программное обеспечение обновлено, поэтому закройте приложение. Если в нем говорится, что доступны обновления, либо сделайте обновление, либо нажмите "Напомнить позже". После того, как это приложение закрывается, вы можете вернуться к использованию apt-get
или же apt
,
Если Software Updater
не работает, просто используйте Dash, чтобы вызвать его и дождаться завершения, а затем решите, хотите ли вы обновить или нажмите "Напомнить позже". После того, как это приложение закрывается, вы можете вернуться к использованию apt-get
или же apt
,
sudo killall -9 apt && sudo killall -9 dpkg
Используйте на свой риск
В моем случае после:
- Откройте Firefox.
- Открытый терминал
Я набрал
sudo apt update
sudp apt upgrade
тогда я получаю проблемы
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?
Я исправил это, выполнив команду, которая была показана мне после запуска sudo apt update
apt list --upgradable
Эта команда покажет вам список программ, в моем случае только Firefox, я закрыл Firefox, затем мог запустить команду снова без проблем.
sudo apt upgrade
В моем случае я получал то же сообщение, не осознавая, что переключился на пользователя root и пытался выполнить sudo apt-get. Как только я понял это, я просто запустил apt-get, и это сработало. Глупо, но это все же может объяснить ошибку для некоторых.
Для людей, которые заинтересованы в профилактическом устранении этой ошибки в своих сценариях, я обнаружил, что флаг -q на apt upgrade -yq
был причиной этой проблемы для меня. Я предполагаю, что во время процесса обновления мне иногда будут выдаваться предупреждения (что-то вроде обновления рабочего стола, я хотел бы продолжить), и если эти предупреждения будут подавлены, то я думаю, что это приводит к тому, что apt не разблокирует защищаемые файлы. и он застрял.
По общему признанию, у меня были проблемы с воспроизведением этой ошибки в 100% случаев, но устранение этой опции -q полностью устранило проблему для меня.
Как и большинство других, я ждал, пока замок будет снят. Через 30 минут я сдался и тяжело загрузился в другой дистрибутив. Оттуда я использовал Интернет для некоторых исследований, которые привели меня сюда.
Оказывается unattended-upgrades.service
это работает. Я обнаружил, что перезагружаюсь в сломанную систему и запускаю:
sudo systemctl disable apt-daily.service
sudo systemctl disable unattended-upgrades.service
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer
sudo shutdown -r # Note it will take a couple minutes to reboot
позволил мне заставить сломанную систему работать снова для:
sudo apt update
sudo apt upgrade
sudo apt install -f
Однако это не исправило скрытые пакеты и невозможную ситуацию, о которой сообщает apt
на первом месте. Казалось бы, это было причиной apt
запереть при загрузке в первую очередь.
Мое решение было:
sudo apt update
sudo apt upgrade
Среда выполнения:
Операционная система: Ubuntu 18.04
Компьютер:Dell Precision 5510
Я пробовал самые популярные ответы на этой странице, и они всегда работали для меня без исключения, однако я нашел более простой способ решения этой проблемы. Сначала немного теории. Что происходит, прежде чем пользователь получит это сообщение об ошибке?
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?
/var/lib/dpkg/lock
заблокирован, поэтому терминал временно не может его использовать, но каким процессом он заблокирован? Это зависит от обстоятельств. Если вы загрузили компьютер несколько минут назад, он, вероятно, заблокирован приложением Software Updater. Попробуйте закрыть терминал и запустить приложение Software Updater. После завершения обновления программного обеспечения он удалит свою собственную блокировку, и пользователю не нужно будет запускать какие-либо команды в терминале.
Другой случай, когда этот ответ полезен, - это виртуальная машина при загрузке гостевой ОС Ubuntu, которая некоторое время неактивна. Обычно гостевая ОС Ubuntu начинает обновляться практически сразу. Процесс обновления часто блокирует команды, которые требуют установки, удаления или обновления программного обеспечения до его завершения. Откройте Software Updater, дайте ему закончить работу и установите все обновления, которые вы хотите установить. Обновление программного обеспечения удалит свою собственную блокировку после завершения.
Добавляя это только в надежде, что это может быть связано, я не тестировал это решение. Если удаление файлов блокировки не помогает, и если это даже не рекомендуется в соответствии с принятым ответом, это может помочь, как решить аналогичную проблему dpkg: ошибка: база данных состояния dpkg заблокирована другим процессом , используя режим восстановления с в приглашение корневой оболочки.
Скопируйте оттуда:
Я удалил файлы блокировки, и PID не работал, но всякий раз, когда я выполнял , оболочка зависала на одной из ранее заблокированных «подходящих» задач, которые я принудительно закрыл, закрыв терминал в конце. Я также убил подходящие процессы, используя
sudo killall apt apt-get
. Застрявшая задача apt в моем случае была "
Setting up docker-ce (5:20.10.1~3-0~ubuntu-bionic)
".
Решение в моем случае:
- Загрузитесь в режиме восстановления.
- В меню восстановления выберите «root», чтобы «Перейти к корневой оболочке».
- Нажмите Ввод.
- Тип
sudo dpkg --configure -a
. - Продолжайте делать то, что вы собирались сделать, теперь это должно работать и / или просто перезагрузиться.
Пожалуйста, посмотрите скриншоты и подробное объяснение (например, как получить режим восстановления при запуске) в ответе docker ps застрял … docker install также просто зависает .
Просто перезагрузитесь, и проблема будет устранена автоматически. Это ваша установка прервана случайно.