Обновление Ubuntu 16.04: dpkg заморожен? [dубликат]

Я получаю эту ошибку при попытке использовать 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?

Как я могу это исправить?

858
задан 2 July 2016 в 13:33

50 ответов

В моем случае я просто ждал несколько минут, и замок был выпущен (выглядит как aptd, используемый для его удержания). Все это произошло сразу после загрузки системы.

3
ответ дан 23 July 2018 в 20:33

Самый вероятный способ сделать это:

загрузить Ubuntu запустить тип терминала sudo apt-get install whatever

, а командная строка apt перекрывается с update-manager автоматическим опросом .

Итак, если вы попробуете снова через несколько минут, чтобы исправить это.

59
ответ дан 23 July 2018 в 20:33
  • 1
    Отличный намек в отличие от полудюжины ответов, предлагающих просто удалить файл ;-) Я случайным образом столкнулся с проблемой и, скорее всего, это все! – Alex 21 January 2014 в 22:14
  • 2
    Достаточно безопасно, пришлось немного подождать, прежде чем sudo apt-get install сможет работать. – sargas 11 May 2015 в 20:56
  • 3
    Ну, это не работает всегда, да, я неоднократно использовал перезагрузку. Если это не подходит, попробуйте askubuntu.com/a/315791/378845 перед удалением блокировок – Menuka Ishan 23 October 2016 в 10:03
  • 4
    @menuka, почему бы просто не закончить. – poolie 24 December 2016 в 18:38
  • 5
    @poolie Поскольку существуют другие ограничения, которые останавливают процесс от завершения – Menuka Ishan 24 December 2016 в 19:17

Прежде всего, мы должны проверить, какой процесс создал файл блокировки с помощью 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
20
ответ дан 23 July 2018 в 20:33
  • 1
    Мало того, что /var/lib/dpkg/lock, а не /var/lib/apt/lists/lock, является файлом в вопросе. – Chai T. Rex 25 April 2017 в 00:12
  • 2
    @ ChaiT.Rex спасибо, сделал обновление;) – Ravexina 25 April 2017 в 00:16
  • 3
    Поблагодарите богов-корней, которые кто-то наконец упоминает pgrep и pkill. – Barry 13 September 2017 в 00:39
  • 4
    Это должен быть принятый ответ. – Marwan Nabil 10 July 2018 в 13:31

Я не вижу этого ответа нигде выше, но на Ubuntu 16.04, я тоже столкнулся с этой проблемой. Причиной было то, что время на моем компьютере было установлено в будущее. (Это потому, что я нахожусь в системе с двойной загрузкой Windows + Ubuntu, и, я думаю, я перепутал местное время и время UTC.)

. Одна странная вещь заключалась в том, что дата и время заблокированного файла были точными дата и время, когда я запускал программу.

Затем я использовал «фьюзер», как описано в предыдущих сообщениях, и apt работал, но я получал жалобы на необходимость запуска dpkg -a -reconfigure. Когда я это сделал, у меня появились такие ошибки, как:

newline in field name #padding

в таких файлах, как '/var/lib/dpkg/updates/0003'.

Все это было очень странно, поскольку Я никогда этого не видел. Итак, я думал, что это симптомы и изменил мои данные и время вручную. Я знал, что была проблема с датой / временем, когда я вошел в систему, но игнорировал ее. (Раньше он настраивал его автоматически через Интернет и NTP).

Затем все указанные проблемы были исправлены ... Надеюсь, это поможет кому-то еще! Наиболее заметным признаком является дата / время файла блокировки, являющегося точной датой / временем, которое вы пытаетесь запустить.

3
ответ дан 23 July 2018 в 20:33

Если у вас есть обновления безопасности, установленные для автоматической установки, это будет происходить часто. Я буквально жду 30 секунд, и это исправляет проблему. Просто выбросьте это там, если кто-нибудь еще столкнется с этой проблемой.

7
ответ дан 23 July 2018 в 20:33

В моем случае X разбился, а apt-get все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. После завершения процесса все было в порядке.

2
ответ дан 23 July 2018 в 20:33
  • 1
    Когда я получил сообщение об ошибке, я обновлял свое программное обеспечение. – raindrop 17 August 2013 в 03:04
  • 2
    Это рухнуло для меня - – umpirsky 21 September 2014 в 22:33
  • 3
    sudo fuser -cuk /var/cache/apt/archives/lock прямо перезагрузил мой компьютер. apt-get теперь разблокирована. – Maxime R. 5 December 2014 в 01:47
  • 4
    Это разбило мой весь сервер. – 에이바 6 January 2015 в 01:28
  • 5
    Убийство apt или dpkg на полпути - это не отличная идея. – poolie 2 February 2015 в 22:12

Я вижу почти все ответы, рекомендующие удалять блокировку. Я не рекомендую делать это в качестве первой меры; возможно, если альтернативы нет. Блокировка помещается, когда выполняется процесс apt, и удаляется, когда процесс завершается. Если есть блокировка без видимого процесса, это может означать, что процесс по какой-то причине застрял.

Если вы попробуете

ps aux | grep apt

, который поймает процессы, содержащие слово apt, по крайней мере. Если вы видите процесс apt-get или процесс aptitude, который выглядит застрявшим, вы можете попробовать

kill processnumber

, и если это не работает, попробуйте

kill -9 processnumber

должен убить процесс и удалить блокировку. Убийство процесса apt или aptitude является безобидным, если оно фактически не находится в середине установки пакета. В любом случае, если процесс застрял, у вас, вероятно, нет выбора, кроме как убить его.

Убийство процесса dpkg напрямую, если оно присутствует, не является хорошей идеей, потому что если dpkg активен, возможно, он манипулирует базой данных пакета, и его уничтожение может оставить базу данных пакета в несогласованном состоянии; т. е. поврежден.

Убийство процесса apt-get или aptitude в целом намного безопаснее.

530
ответ дан 31 July 2018 в 19:11

В моем случае X разбился, а apt-get все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. Все было хорошо после завершения процесса.

95
ответ дан 3 August 2018 в 16:38

Наиболее вероятный способ получить это:

  • boot Ubuntu
  • запустить терминал
  • тип sudo apt-get install whatever

, а команда apt перекрывается с автоматическим опросом update-manager.

Итак, если вы попробуете снова через несколько минут, чтобы исправить это.

61
ответ дан 3 August 2018 в 16:38

В моем случае X разбился, а apt-get все еще удалял старые ядра. Я использовал системный монитор, чтобы убедиться, что он все еще работает и не застревает. Все было хорошо после завершения процесса.

95
ответ дан 5 August 2018 в 01:58

Это произойдет, если у вас есть «Менеджер обновлений», работающий параллельно для любой проверки обновлений или установки, когда процесс установки помещает 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

18
ответ дан 6 August 2018 в 18:36

Просто sudo rm -f /var/lib/apt/lists/lock и повторите попытку.

apt-fast МОЖЕТ быть ответственным за неправильное разблокирование; это случается иногда, когда вы также прерываете apt-get или dpkg.

4
ответ дан 6 August 2018 в 18:36

В моем случае я просто ждал несколько минут, и замок был выпущен (выглядит как aptd, используемый для его удержания). Все это произошло сразу после загрузки системы.

3
ответ дан 8 August 2018 в 22:55

Наиболее вероятный способ получить это:

  • boot Ubuntu
  • запустить терминал
  • тип sudo apt-get install whatever

, а команда apt перекрывается с автоматическим опросом update-manager.

Итак, если вы попробуете снова через несколько минут, чтобы исправить это.

61
ответ дан 8 August 2018 в 22:55

Прежде всего, мы должны проверить, какой процесс создал файл блокировки, используя 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
21
ответ дан 8 August 2018 в 22:55

Это должно использоваться как последнее средство. Если вы используете это небрежно, вы можете оказаться в неисправной системе. Сначала попробуйте другие ответы сначала .

Вы можете удалить файл блокировки с помощью следующей команды:

sudo rm /var/lib/apt/lists/lock

Вам также может потребоваться удалить файл блокировки в каталоге кеша

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

. После этого попробуйте снова открыть Synaptic.

690
ответ дан 8 August 2018 в 22:55

Просто sudo rm -f /var/lib/apt/lists/lock и повторите попытку.

apt-fast МОЖЕТ быть ответственным за неправильное разблокирование; это случается иногда, когда вы также прерываете apt-get или dpkg.

4
ответ дан 14 August 2018 в 12:53

Я не вижу этого ответа нигде выше, но на Ubuntu 16.04, я тоже столкнулся с этой проблемой. Причиной было то, что время на моем компьютере было установлено в будущее. (Это потому, что я нахожусь в системе с двойной загрузкой Windows + Ubuntu, и я думаю, что я испортил местное время и время UTC.)

. Одна странная вещь заключалась в том, что дата и время заблокированного файла были точными дата и время, когда я запускал программу.

Затем я использовал «фьюзер», как описано в предыдущих сообщениях, и apt работал, но я получал жалобы на необходимость запуска dpkg -a -reconfigure. Когда я это сделал, у меня появились такие ошибки, как:

newline in field name #padding

в таких файлах, как '/var/lib/dpkg/updates/0003'.

Все это было очень странно, поскольку Я никогда раньше этого не видел. Итак, я думал, что это симптомы и изменил мои данные и время вручную. Я знал, что была проблема с датой / временем, когда я вошел в систему, но игнорировал ее. (Раньше он устанавливал его автоматически через Интернет и NTP).

Затем все указанные проблемы были исправлены ... Надеюсь, это поможет кому-то еще! Наиболее заметным симптомом может быть дата / время файла блокировки, являющегося точной датой / временем, которое вы пытаетесь запустить.

3
ответ дан 14 August 2018 в 12:53
sudo killall -9 apt && sudo killall -9 dpkg

Использовать на свой страх и риск

0
ответ дан 7 October 2018 в 18:42

Проверьте, запущена ли программа запуска Software Updater. Если это так, увеличьте его и посмотрите, что он делает. Если он все еще проверяет, то дождитесь его завершения. Когда он завершится, вы можете сказать, что программное обеспечение обновлено настолько близко, что приложение. Если он говорит, что есть доступные обновления, либо сделайте обновление, либо нажмите «Напомнить мне позже». После этого приложение закрывается, вы можете вернуться к использованию apt-get или apt.

Если Software Updater не работает, просто используйте Dash для его вызова и ожидания завершения, а затем решите, вы хотите обновить или нажать «Напомнить мне позже». После этого приложение закрывается, вы можете вернуться к использованию apt-get или apt.

0
ответ дан 7 October 2018 в 18:42

Другие вопросы по тегам:

Похожие вопросы: