При попытке обновить 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