Что это за файл блокировки? Как я могу исправить эту ошибку? [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?

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

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

45 ответов

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

3
ответ дан 24 July 2018 в 19:09

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

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

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

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

59
ответ дан 24 July 2018 в 19:09
  • 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
ответ дан 24 July 2018 в 19:09
  • 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
ответ дан 24 July 2018 в 19:09

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

7
ответ дан 24 July 2018 в 19:09

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

2
ответ дан 24 July 2018 в 19:09
  • 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-get или некоторым GUI, который назвал его зависающим по какой-то причине. Я должен был убить его, что оставило различные блокировки на месте.

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

Хотя большинство или все это представлено в других ответах, это отводит исправление до нескольких команд.

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

Используется для разблокировки системы пакетов после того, как какое-либо обновление было повреждено или завершено, не закончив каким-либо другим способом. Эти команды должны выполняться в представленном порядке.

3
ответ дан 31 July 2018 в 22:13

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

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

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

15
ответ дан 2 August 2018 в 15:30

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

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

4
ответ дан 3 August 2018 в 19:33

В моем случае я получал одно и то же сообщение, не понимая, что переключился на пользователя root и пытался sudo apt-get. Как только я понял это, я просто побежал, и он сработал. Глупо, но это может объяснить ошибку для некоторых.

2
ответ дан 3 August 2018 в 19:33

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

У меня была эта проблема много раз. Для меня это было почти всегда вызвано apt-get или некоторым GUI, который назвал его зависающим по какой-то причине. Я должен был убить его, что оставило различные блокировки на месте.

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

Хотя большинство или все это представлено в других ответах, это отводит исправление до нескольких команд.

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

Используется для разблокировки системы пакетов после того, как какое-либо обновление было повреждено или завершено, не закончив каким-либо другим способом. Эти команды должны выполняться в представленном порядке.

3
ответ дан 5 August 2018 в 04:19

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

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

ps aux | grep apt

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

kill processnumber

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

kill -9 processnumber

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

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

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

534
ответ дан 6 August 2018 в 21:22

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

11
ответ дан 9 August 2018 в 01:51

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

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