arch failed to synchronize all databases (unable to lock database)

При попытке обновить Arch Linux или дистрибутив на его основе (например, BlackArch) может возникнуть ошибка «error: failed to synchronize all databases (unable to lock database)».

Например, при вводе команды

sudo pacman -Syu

Может быть выведено (в случае, если система с английской локалью):

:: Synchronizing package databases...
error: failed to synchronize all databases (unable to lock database)

С русской локалью будет написано «ошибка: failed to synchronize all databases (не удалось заблокировать базу данных)», то есть ошибка синхронизации всех баз данных из-за того, что не получилось заблокировать базу данных.

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

Если это действительно так (например, вы уже запустили pacman в другой вкладке), то рекомендуется дождаться выполнения этой команды, чтобы впоследствии не возникло ошибок в кэше и базе данных установленных пакетов. Если вы уверены, что это сообщение выводиться исключительно по ошибке — например, вы через SSH с помощью pacman обновляли пакеты, но сессия неожиданно была прервана и вы вновь подключись к удалённому компьютеру, но при попытке использовать pacman появляется эта ошибка, то в этом случае для её исправления достаточно удалить файл /var/lib/pacman/db.lck следующим образом:

sudo rm /var/lib/pacman/db.lck

После этого вновь запустите pacman — проблема должна быть полностью решена.

Если вы не уверены, нужно ли удалять файл db.lck, то вы можете проверить дату его создания следующим образом:

ls -l /var/lib/pacman/db.lck

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

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

Очистку можно начать с удаления журналов. Например, для удаления логов веб-сервера:

rm /var/log/httpd/*

Для удаления временных файлов:

rm -rf /tmp/*

Для удаления файлов установочных пакетов:

pacman -Scc
,
,