Показать статистику
0 голосов
от (2.3тыс. баллов)

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

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

418 просмотров 3 ответов
от (2.7тыс. баллов)
0

Еще

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

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

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

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

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

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

3 Ответы

0 голосов
от (2.7тыс. баллов)

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

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

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

0 голосов
от (26.4тыс. баллов)

Я вижу, что почти все ответы рекомендуют удалить блокировку. Это никогда не должно быть сделано, всегда предпочтительнее убить dpkg (который должен быть устойчивым к такого рода событиям), чем даже думать об удалении его файла блокировки (где его присутствие не указывает на удерживаемую блокировку). Блокировки устанавливаются, когда запущен процесс dpkg или apt процесс, и снимаются (при необходимости ядром), когда процессы завершаются или уничтожаются. Более новые dpkg и apt версии будут печатать PID процесса, содержащего оспариваемый файл блокировки, и aptтеперь даже ждут по умолчанию освобождения блокировок. Это описано в FAQ по dpkg .

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

sudo fuser -vik -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock
sudo dpkg --configure --pending

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

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

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

0 голосов
от (600 баллов)

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

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

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

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

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

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
...