Я получаю эту ошибку при попытке использовать 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?
Как я могу это исправить?
В моем случае я просто ждал несколько минут, и замок был выпущен (выглядит как aptd, используемый для его удержания). Все это произошло сразу после загрузки системы.
Самый вероятный способ сделать это:
загрузить Ubuntu запустить тип терминала sudo apt-get install whatever, а командная строка apt перекрывается с update-manager автоматическим опросом .
Итак, если вы попробуете снова через несколько минут, чтобы исправить это.
Прежде всего, мы должны проверить, какой процесс создал файл блокировки с помощью 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
Затем мы должны проверить, что делает commad, мы можем найти его с помощью 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
If это тоже не сработало, мы должны отправить SIGHUP (kill -1), и, наконец, если ничего не работает, я просто убиваю процесс:
sudo kill -9 12127
или
sudo pkill -9 apt-get
Затем я удаляю загруженные ресурсы:
sudo rm /var/lib/apt/lists/lock
Я не вижу этого ответа нигде выше, но на Ubuntu 16.04, я тоже столкнулся с этой проблемой. Причиной было то, что время на моем компьютере было установлено в будущее. (Это потому, что я нахожусь в системе с двойной загрузкой Windows + Ubuntu, и, я думаю, я перепутал местное время и время UTC.)
. Одна странная вещь заключалась в том, что дата и время заблокированного файла были точными дата и время, когда я запускал программу.
Затем я использовал «фьюзер», как описано в предыдущих сообщениях, и apt работал, но я получал жалобы на необходимость запуска dpkg -a -reconfigure. Когда я это сделал, у меня появились такие ошибки, как:
newline in field name #padding
в таких файлах, как '/var/lib/dpkg/updates/0003'.
Все это было очень странно, поскольку Я никогда этого не видел. Итак, я думал, что это симптомы и изменил мои данные и время вручную. Я знал, что была проблема с датой / временем, когда я вошел в систему, но игнорировал ее. (Раньше он настраивал его автоматически через Интернет и NTP).
Затем все указанные проблемы были исправлены ... Надеюсь, это поможет кому-то еще! Наиболее заметным признаком является дата / время файла блокировки, являющегося точной датой / временем, которое вы пытаетесь запустить.
Если у вас есть обновления безопасности, установленные для автоматической установки, это будет происходить часто. Я буквально жду 30 секунд, и это исправляет проблему. Просто выбросьте это там, если кто-нибудь еще столкнется с этой проблемой.
В моем случае X разбился, а apt-get все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. После завершения процесса все было в порядке.
Я вижу почти все ответы, рекомендующие удалять блокировку. Я не рекомендую делать это в качестве первой меры; возможно, если альтернативы нет. Блокировка помещается, когда выполняется процесс apt, и удаляется, когда процесс завершается. Если есть блокировка без видимого процесса, это может означать, что процесс по какой-то причине застрял.
Если вы попробуете
ps aux | grep apt
, который поймает процессы, содержащие слово apt
, по крайней мере. Если вы видите процесс apt-get
или процесс aptitude
, который выглядит застрявшим, вы можете попробовать
kill processnumber
, и если это не работает, попробуйте
kill -9 processnumber
должен убить процесс и удалить блокировку. Убийство процесса apt
или aptitude
является безобидным, если оно фактически не находится в середине установки пакета. В любом случае, если процесс застрял, у вас, вероятно, нет выбора, кроме как убить его.
Убийство процесса dpkg
напрямую, если оно присутствует, не является хорошей идеей, потому что если dpkg
активен, возможно, он манипулирует базой данных пакета, и его уничтожение может оставить базу данных пакета в несогласованном состоянии; т. е. поврежден.
Убийство процесса apt-get
или aptitude
в целом намного безопаснее.
В моем случае X разбился, а apt-get
все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. Все было хорошо после завершения процесса.
Наиболее вероятный способ получить это:
sudo apt-get install whatever
, а команда apt
перекрывается с автоматическим опросом update-manager
.
Итак, если вы попробуете снова через несколько минут, чтобы исправить это.
В моем случае X разбился, а apt-get
все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. Все было хорошо после завершения процесса.
Это произойдет, если у вас есть «Менеджер обновлений», работающий параллельно для любой проверки обновлений или установки, когда процесс установки помещает Lock. Если вы столкнулись с такой же ошибкой без запуска «Диспетчера обновлений», вам нужно удалить ее из /var/lib/dgkg/lock
, что определенно не может быть сделано вручную
sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock
работает нормально. Взято из: https://askubuntu.com/a/15469/68707
Просто sudo rm -f /var/lib/apt/lists/lock
и повторите попытку.
apt-fast МОЖЕТ быть ответственным за неправильное разблокирование; это случается иногда, когда вы также прерываете apt-get
или dpkg
.
В моем случае я просто ждал несколько минут, и замок был выпущен (выглядит как aptd
, используемый для его удержания). Все это произошло сразу после загрузки системы.
Наиболее вероятный способ получить это:
sudo apt-get install whatever
, а команда apt
перекрывается с автоматическим опросом update-manager
.
Итак, если вы попробуете снова через несколько минут, чтобы исправить это.
Прежде всего, мы должны проверить, какой процесс создал файл блокировки, используя 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
Затем мы должны проверить, что делает commad, мы можем найти его с помощью 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 rm /var/lib/apt/lists/lock
Вам также может потребоваться удалить файл блокировки в каталоге кеша
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
. После этого попробуйте снова открыть Synaptic.
Просто sudo rm -f /var/lib/apt/lists/lock
и повторите попытку.
apt-fast МОЖЕТ быть ответственным за неправильное разблокирование; это случается иногда, когда вы также прерываете apt-get
или dpkg
.
Я не вижу этого ответа нигде выше, но на Ubuntu 16.04, я тоже столкнулся с этой проблемой. Причиной было то, что время на моем компьютере было установлено в будущее. (Это потому, что я нахожусь в системе с двойной загрузкой Windows + Ubuntu, и я думаю, что я испортил местное время и время UTC.)
. Одна странная вещь заключалась в том, что дата и время заблокированного файла были точными дата и время, когда я запускал программу.
Затем я использовал «фьюзер», как описано в предыдущих сообщениях, и apt работал, но я получал жалобы на необходимость запуска dpkg -a -reconfigure
. Когда я это сделал, у меня появились такие ошибки, как:
newline in field name #padding
в таких файлах, как '/var/lib/dpkg/updates/0003'.
Все это было очень странно, поскольку Я никогда раньше этого не видел. Итак, я думал, что это симптомы и изменил мои данные и время вручную. Я знал, что была проблема с датой / временем, когда я вошел в систему, но игнорировал ее. (Раньше он устанавливал его автоматически через Интернет и NTP).
Затем все указанные проблемы были исправлены ... Надеюсь, это поможет кому-то еще! Наиболее заметным симптомом может быть дата / время файла блокировки, являющегося точной датой / временем, которое вы пытаетесь запустить.
sudo killall -9 apt && sudo killall -9 dpkg
Использовать на свой страх и риск
Проверьте, запущена ли программа запуска Software Updater
. Если это так, увеличьте его и посмотрите, что он делает. Если он все еще проверяет, то дождитесь его завершения. Когда он завершится, вы можете сказать, что программное обеспечение обновлено настолько близко, что приложение. Если он говорит, что есть доступные обновления, либо сделайте обновление, либо нажмите «Напомнить мне позже». После этого приложение закрывается, вы можете вернуться к использованию apt-get
или apt
.
Если Software Updater
не работает, просто используйте Dash для его вызова и ожидания завершения, а затем решите, вы хотите обновить или нажать «Напомнить мне позже». После этого приложение закрывается, вы можете вернуться к использованию apt-get
или apt
.