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

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


838
2017-11-30 02:12


происхождения


Это также верно, если вы перезагружаетесь? Может быть, какая-то старая apt-нить блокирует файл, вам нужно выяснить, что и убить, или просто перезагрузить это сделает. - Bruno Pereira
Эта процедура почти всегда исправляет эту проблему, а когда это не так, ее вывод (текст из терминала) иногда полезен. Если вы решите это сделать, вы можете добавить этот текст к своему вопросу. - Eliah Kagan
Я бы предложил еще одну вещь, которую вы можете заметить, столкнувшись с этой проблемой. Проверьте, установлены ли ваши диски. Если это не так, вы не сможете получить блокировку, поскольку установщик пакета не сможет получить доступ к файловой системе. Надеюсь это поможет. :) - Hari
Вы можете использовать sudo lsof /var/lib/dpkg/lock для поиска процесса, которому принадлежит файл блокировки (если он пуст, предположим, что блокировка оставлена ​​после предыдущей загрузки и может быть sudo rmг), затем рассмотрим возможность sudo kill -9 <PID> (получите <PID> из lsof вывод. - waltinator
Это может быть признаком того, что что-то еще устанавливает или удаляет программное обеспечение и блокирует APT-базу данных при выполнении действий. - Foreever


ответы:


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

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

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

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

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

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


719
2018-02-07 02:22



хорошо ... но почему это случилось? - Jaime Hablutzel
@jaime: возможно, apt-get (или какой-то интерфейс GUI для него) был остановлен во время выполнения, оставив apt в заблокированном состоянии. - bouke
Я бы принял это как лучший ответ. исправьте. - Anwar
@AnwarShah нет, есть другие соображения, прежде чем обойти удаление файлов системы. - Braiam
rm / var / lib / dpkg / lock; dpkg --configure -a: - WitchCraft


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

Если вы пытаетесь

ps aux | grep apt

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

kill processnumber

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

kill -9 processnumber

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

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

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


550
2017-07-03 09:01



@Link Я не думаю, что убиваю dpkg это хорошая идея, потому что обычно dpkg напрямую манипулирует базой данных пакета, и это может привести к повреждению. - Faheem Mitha
Если dpkg может привести к повреждению базы данных, dpkg был плохо разработан. Период. - Jay Sullivan
для меня это привело к ошибке dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. при запуске sudo apt-get dist-upgrade еще раз. Запустив команду, она решила проблему. Я люблю Никс! - Wayne Phipps
Заметка, killall apt-get делает то же, что и ваше ps/kill комбо. - Cerin
Обратите внимание, что я обнаружил, что мне нужно запустить sudo dkpg --configure -a после того, как он убил процесс изгоев, чтобы вещи вернулись к нормальной жизни. - starbeamrainbowlabs


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

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

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


175
2018-01-29 11:27



эти команды помогли, но теперь, когда я попытался установить снова, получил этот ответ: Не удалось получить lock / var / cache / apt / archives / lock - open. Я думаю, что мне придется делать как предыдущую проблему разблокировки, но, пожалуйста, скажите мне точные ключевые слова для команды. Я абсолютный новичок. - kern
sudo - выполнить команду как root, rm - удалить файл. Возможно, попробуйте sudo rm /var/cache/apt/archives/lock - kubahaha
Это нехорошее предложение: слепое удаление удачи может привести к повреждению состояния dpkg. - poolie
Почему бы не исправить себя сейчас? - Marian Klühspies
Это сработало для меня. Увы, выше не было. - 1rq3fea324wre


Вы получите это сообщение, если забыли использовать 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

97
2017-11-30 02:17



Когда я получил сообщение об ошибке, я обновлял свое программное обеспечение. - raindrop
Это рухнуло для меня - - umpirsky
sudo fuser -cuk /var/cache/apt/archives/lock напрямую перезагрузился мой компьютер. apt-get теперь разблокирована. - Maxime R.
Это разбило мой весь сервер. - 에이바
Убийство apt или dpkg на полпути - это не отличная идея. - poolie


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

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

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

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


67
2017-11-30 03:08



Отличный намек в отличие от полудюжины ответов, предлагающих просто удалить файл ;-) Я случайным образом столкнулся с проблемой и, скорее всего, это все! - Alex
Достаточно безопасно, пришлось подождать немного раньше sudo apt-get install может работать. - sargas
Ну, это не работает всегда, да, я неоднократно использовал перезагрузку. Если это не подходит, попробуйте это askubuntu.com/a/315791/378845 перед удалением замков - Menuka Ishan
@menuka, почему бы просто не закончить. - poolie
@poolie Поскольку существуют другие ограничения, которые останавливают процесс от завершения - Menuka Ishan


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

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


48
2017-11-30 04:55



Удаление файла блокировки - это то, что я считаю, опасной задачей. Если другой процесс блокируется по уважительной причине - и вы удаляете этот файл блокировки и принудительно устанавливаете с тем, что вы делали раньше - вы могли бы серьезно отрицательно повлиять на вашу систему. - Marco Ceppi♦
Вот почему я дал это в Note.If все вышеперечисленное не удалось, единственный способ удалить блокировку. Это не вызовет никаких проблем, если процессы dpkg и apt-get / aptitude не запущены - karthick87
pgrep -f 'apt|adept|dpkg' намного короче. - Barry
Спасибо! это работает. pgrep -f 'apt | adept | dpkg', а затем sudo умение (число), убить все число и затем установить работы! - creator


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

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


35
2018-02-02 10:01



После обновления системы и повторного запуска сервиса apt-daily.timer я пока не сталкиваюсь с этой проблемой. - Jairelee
Это решило мою проблему, спасибо. - inkredibl
Это, пожалуй, самый чистый метод по сравнению со всеми вышеизложенными выше. Он работал в моем случае безупречно, спасибо! - CygnusX1
Это безупречно работало и в 17.10 - Elder Geek
Работает отлично в 18.04. :) - Naveen Kumar V


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

 pgrep -a apt-get
 12127 apt-get update

мы видим, что он работает update subcommand, я мог бы запустить что-то вроде этого тоже:

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+С):

sudo kill -2 12127

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

sudo kill -9 12127

или

sudo pkill -9 apt-get

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

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

25
2018-04-24 07:29



Мало того, что /var/lib/dpkg/lock скорее, чем /var/lib/apt/lists/lock это файл в вопросе. - Chai T. Rex
@ ChaiT.Rex спасибо, сделал обновление;) - Ravexina
Спасибо коренным богам, которые кто-то наконец упоминает pgrep а также pkill, - Barry
Это должен быть принятый ответ. - Marwan Nabil


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



Это была проблема в моем случае! - LondonRob
Лучшее решение, поскольку команда фьюзера используется для отслеживания другого процесса (если он еще жив) - Lars Nordin


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

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


16
2017-10-04 12:39



У меня было это сразу после установки Ubuntu 16.04. Оказывается, в программном центре Ubuntu был фоновый процесс, который ждал, когда я смогу вручную установить некоторые обновления. - jvriesem
То же самое после новой установки 16.04. Это слишком много дольше, чем «несколько секунд» в моем случае (я успел прочитать всю эту Q & A страницу!), Но после обновления ps несколько раз я мог видеть dpkg обновлял всю нагрузку, и я терпеливо ждал, пока все закончится. Я тогда побежал Мастер обновления программного обеспечения пока все не было в курсе, прежде чем пытаться установить что-либо новое. - Charlie Joynt


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


11
2018-01-15 09:54



Это скорее комментарий, чем ответ. Не могли бы вы переместить это вместо комментария в ответ, на который он отвечал? - jvriesem
@jvriesem Я думаю, что это очень важный ответ, потому что тот момент, который он делает, отсутствует во многих других ответах! - Volker Siegel