MyTetra Share
Делитесь знаниями!
Ошибка Unable to lock the administration directory /var/lib/dpkg
Время создания: 07.02.2018 14:18
Текстовые метки: linux apt lock dpkg unable
Раздел: Linux
Запись: Velonski/mytetra-database/master/base/1517995103lecdlek6n0/text.html на raw.githubusercontent.com

Когда вы пытаетесь использовать утилиту apt для установки программного обеспечения или обновления системы в Ubuntu, Debian, и других дистрибутивах вы можете столкнуться с ошибкой: Unable to lock the administration directory /var/lib/dpkg.

Эта ошибка по своей сути очень проста и исправить ее не сложно, но для новых пользователей она может стать серьезным препятствием на пути к освоению Linux систем. В этой статье мы рассмотрим что означает Unable to lock the administration directory /var/lib/dpkg, а также как решить эту проблему.

Содержание статьи:

Что значит эта ошибка?

В Ubuntu 16.10 строки с сообщением об ошибке будут выглядеть вот так:

sudo apt install neofetch

[sudo] password for sergiy:
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?

Вывод команды может быть немного другим, но сути ошибки это не меняет:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
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?

Если перевести значение ошибки дословно, то утилита нам сообщает что не может создать файл блокировки /var/lib/apt/lists/lock или /var/lib/dpkg/lock, а поэтому не может быть уверена что она одна использует папку /var/lib/dpkg. Затем утилита спрашивает нет ли у нас уже запущенного второго экземпляра этой программы, который уже создал этот файл и сейчас работает с папкой. Дальше мы рассмотрим несколько способов решения этой проблемы.

Как исправить Unable to lock the administration directory?

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

Но это только если действительно запущена другая версия программы. Посмотрите список процессов и проверьте есть ли там уже запущенный процесс apt или apt-get. Для этого можно использовать ps:

ps -A | grep apt

Вы также можете посмотреть какой процесс сейчас использует этот файл с помощью команды:

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

1. Завершение программы apt

Вы можете подождать пока завершится программа, или завершить ее вручную по PID номеру процесса с помощью утилиты kill. Если вы уверенны, что другая утилита не выполняет ничего важного или то что вы собираетесь установить важнее, то можно ее завершить. Например, используйте такую команду:

sudo kill -9 PID

Или:

sudo kill -SIGKILL PID

Например, если PID процесса apt будет 13433, то команда будет выглядеть вот так:

sudo kill -9 13433
$ sudo kill -SIGKILL 13433

Также вы можете уничтожить все процессы apt за раз с помощью комады:

killall apt

2. Удалить файл блокировки

Если в папке есть файл lock, то утилита не будет трогать другие файлы в этой папке, таким образом, создавая файл, программа говорит, что работает с этими данными и если еще кто-то попытается их менять то это вызовет повреждение. Такой концепт используется не только в Linux, но и в Windows и других операционных системах.

Когда запускается утилита apt создается файл блокировки в таких директориях: /var/lib/apt/lists/, /var/lib/dpkg/ и /var/cache/apt/archives/. Это помогает утилите обнаружить уже запущенную копию и не повредить свои данные. Когда утилита завершает работу, данные удаляются.

Но файл блокировки может остаться в одной из директорий даже после завершения программы, если утилита завершила работу неправильно, например, с ошибкой сегментации или было неожиданное отключение электричества. В таком случае вам будет достаточно удалить эти файлы чтобы исправить ошибку. Сначала удалите файл блокировки из /var/lib/dpkg:

sudo rm /var/lib/dpkg/lock

Теперь запустите процесс перенастройки dpkg:

sudo dpkg --configure -a

Или же можно вручную удалить оставшиеся файлы блокировок:

sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock

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

Выводы

Мы рассмотрели два способа решения ошибки unable to lock the administration directory var lib dpkg которая может вызвать затруднения у новых пользователей. Но теперь вы знаете почему она появляется и как с ней бороться. Если у вас остались вопросы, пишите в комментариях!

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования