I was trying to update my CachyOS system with in the usual Arch way when I encountered this ‘failed to synchronize all databases’ error.
sudo pacman -Syu
[sudo] password for abhishek:
:: Synchronizing package databases...
error: failed to synchronize all databases (unable to lock database)
The fix was rather simple. It worked effortlessly for me and I hope it does for you, too.
Handling failed to synchronize all databases error
Check that no other program is using the pacman command:
ps -aux | grep -i pacman
If you see a single line output with grep --color=auto -i pacman
at the end, it means that no program other than the grep command you just ran is using pacman.
If you see some other programs, use their process ID to kill them first and then use this command to remove the lock from the database:
sudo rm /var/lib/pacman/db.lck
Once done, you can run the pacman update again to see if things are working smooth or not.
Here’s a screenshot of the entire scenario on my CachyOS linux:

That didn’t work? Try this
In some rare cases, just removing the database lock might not fix the issue. What you could try is to delete the entire database of the local cache. The next pacman update will take longer as it will download plenty, but it may fix your issue.
sudo rm /var/lib/pacman/sync/*.*
Reason why you see this ‘unable to lock databases’ error

For the curious few who would like to know why they encountered this failed to synchronize all databases (unable to lock database)
error, let me explain.
Pacman commands are just one way to install or update packages on an Arch-based system. There could be Pamac or some other tool like KDE Discover with their respective PackageKit plugins or some other instances of pacman running in another terminal.
Two processes trying to modify the system package database at the same time could be problematic. This is why the built-in security mechanism in Arch locks the database by creating the /var/lib/pacman/db.lck
.
This is an indication to let pacman know that some program is using the package database. Once the program finishes up successfully, this lock file is deleted automatically.
In some cases, this lock file might not be deleted. For instance, when you turn off your system when pacman command was already running in a terminal. This is what happened in my case. I ran the pacman -Syu
command and it was waiting for my Y to start installing the updates. I got distracted and forced turn the system off. On the next boot, I encountered this error when I tried updating the system.
This is also the reason why you should check if some other program might be using pacman underneath. Force removing the lock file when there is an active program using the database is not a good idea.
In some rare cases, the lock file removal alone won’t fix the issue. You may have to delete the local database cache. This happens when the local database of package is corrupted. This is what I mentioned in the earlier section.
Did it fix the issue for you?
Now that you know the root cause of the issue and the ways of fixing it, let me know if the fix I shared with you here worked for you or not.
If it did, drop a quick “Thank You”. That is a motivation booster.
And if it didn’t, I might try helping you further.
The comment section is all yours.
Source: Read More