Не удалось заблокировать каталог администрирования (/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?  

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

814 голосов | спросил La Ode Adam Saputra 30 22010vEurope/Moscow11bEurope/MoscowTue, 30 Nov 2010 05:12:48 +0300 2010, 05:12:48

19 ответов


686

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

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

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

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

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

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

ответил zurdo 7 FebruaryEurope/MoscowbTue, 07 Feb 2012 06:22:32 +0400000000amTue, 07 Feb 2012 06:22:32 +040012 2012, 06:22:32
530

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

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

ps aux | grep apt

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

kill processnumber

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

kill -9 processnumber

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

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

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

ответил Faheem Mitha 3 J000000Wednesday13 2013, 13:01:58
166

Удалите файл /var/lib/dpkg/lock и переустановите пакет.

sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a

После этого он должен работать.

ответил Bruno Pereira 29 Jpm1000000pmSun, 29 Jan 2012 15:27:50 +040012 2012, 15:27:50
95

Вы получите это сообщение, если вы забудете использовать sudo при выполнении команды apt.

В противном случае это признак того, что что-то еще устанавливает или удаляет программное обеспечение и блокирует базу данных apt во время выполнения действий. Программы, которые могут это сделать, следующие:

  • Центр программного обеспечения
  • Менеджер обновлений
  • Устный установщик ссылок (я думаю, теперь это проходит через SC)
  • Утилиты командной строки apt-get или aptitude.
  • Менеджер пакетов Synaptic

ВАЖНО: попробуйте использовать последнее в качестве последнего средства, так как оно может привести к сбою вашей системы. Сначала попробуйте убить любой запущенный экземпляр apt или aptitude, как описано в Ответ Faheem .

Вы можете заблокировать блокировку, удалив файл, но не рекомендуется без первого закрытия программы, которая надежно удерживает блокировку , поскольку вы можете вызвать повреждение или прервать установку (плохая). Команда, предоставленная 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
ответил Martin Owens -doctormo- 30 22010vEurope/Moscow11bEurope/MoscowTue, 30 Nov 2010 05:17:07 +0300 2010, 05:17:07
61

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

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

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

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

ответил poolie 30 22010vEurope/Moscow11bEurope/MoscowTue, 30 Nov 2010 06:08:13 +0300 2010, 06:08:13
48

Только одна программа может удерживать блокировку. Убедитесь, что вы не используете 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

Теперь вы можете установить любые пакеты.

ответил karthick87 30 22010vEurope/Moscow11bEurope/MoscowTue, 30 Nov 2010 07:55:51 +0300 2010, 07:55:51
33

Пока лучший способ заставить его работать, не нарушая возможную установку на фоновом режиме (как это может произойти, удалив файл блокировки), останавливает службу с помощью 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

Я не подтвердил, что эта ошибка исправляется после обновления. Я добавлю новый комментарий, как только у меня будет проверено

ответил Jairelee 2 FebruaryEurope/MoscowbThu, 02 Feb 2017 13:01:40 +0300000000pmThu, 02 Feb 2017 13:01:40 +030017 2017, 13:01:40
21

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

apt-get update

Он должен выполнить эту работу. Если бы я не отправил SIGTERM на этот раз (это похоже на нажатие CTRL + C ) >):

sudo kill -15 12127

Если это тоже не сработало, мы должны отправить SIGINT (sudo kill -2 12127 ), и, наконец, если ничего не работает, я просто убиваю процесс:

SIGHUP

или

kill -1

Затем я удаляю загруженные ресурсы:

sudo kill -9 12127
ответил Ravexina 24 AMpMon, 24 Apr 2017 10:29:06 +030029Monday 2017, 10:29:06
18

Это произойдет, если у вас есть «Менеджер обновлений», работающий параллельно для любой проверки обновлений или установки, когда процесс установки блокирует. Если вы столкнулись с такой же ошибкой без запуска «Диспетчера обновлений», вам нужно удалить ее из /var/lib/dgkg/lock, что определенно вы не можете сделать это вручную

sudo fuser -cuk /var/lib/dpkg/lock
sudo rm -f /var/lib/dpkg/lock

работает отлично. Снято с: https://askubuntu.com/a/15469/68707

ответил Nabeel Ahmed 6 J0000006Europe/Moscow 2012, 11:17:48
15

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

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

ответил Batsu 4 +04002013-10-04T16:39:50+04:00312013bEurope/MoscowFri, 04 Oct 2013 16:39:50 +0400 2013, 16:39:50
11

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

ответил Wessi 15 Jpm1000000pmThu, 15 Jan 2015 12:54:05 +030015 2015, 12:54:05
8

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

ответил Wh33t 17 Mayam16 2016, 01:02:05
4

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

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

ответил ish 12 J0000006Europe/Moscow 2012, 01:47:27
3

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

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

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

newline in field name #padding

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

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

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

ответил Ray 8 Mayam16 2016, 04:17:44
3

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

ответил Pavel Vlasov 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 24 Sep 2016 14:19:00 +0300 2016, 14:19:00
3

У меня была эта проблема много раз. Для меня это было почти всегда вызвано 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

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

ответил Joe 21 +03002016-10-21T22:59:39+03:00312016bEurope/MoscowFri, 21 Oct 2016 22:59:39 +0300 2016, 22:59:39
2

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

ответил BluePython 31 MaramThu, 31 Mar 2016 05:43:19 +03002016-03-31T05:43:19+03:0005 2016, 05:43:19
2

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

ответил wjandrea 24 SatEurope/Moscow2016-12-24T04:37:37+03:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2016 04:37:37 +0300 2016, 04:37:37
0

в моем случае, после:

  1. Откройте Firefox.
  2. Открыть терминал

Я набрал


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
ответил christianbueno.1 5 Jpm1000000pmFri, 05 Jan 2018 22:55:28 +030018 2018, 22:55:28

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132