Upon failing to unlock the database, pacman -Su provides a useful tip
related to unlocking it by deleting /var/lib/pacman/db.lck if it already
exists.
This fixes pacman -Syu to provide the same tip upon failing to lock.
Signed-off-by: Ashok Gautham Jadatharan <ScriptDevil(a)zoho.com>
---
src/pacman/util.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 0f50ae0b..d3422739 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -152,12 +152,25 @@ int sync_syncdbs(int level, alpm_list_t *syncs)
{
int ret;
int force = (level < 2 ? 0 : 1);
+ alpm_errno_t err;
multibar_move_completed_up(false);
ret = alpm_db_update(config->handle, syncs, force);
+
if(ret < 0) {
+ err = alpm_errno(config->handle);
pm_printf(ALPM_LOG_ERROR, _("failed to synchronize all databases (%s)\n"),
- alpm_strerror(alpm_errno(config->handle)));
+ alpm_strerror(err));
+
+ if(err == ALPM_ERR_HANDLE_LOCK) {
+ const char *lockfile = alpm_option_get_lockfile(config->handle);
+ pm_printf(ALPM_LOG_ERROR, _("could not lock database: %s\n"),
+ strerror(errno));
+ if(access(lockfile, F_OK) == 0) {
+ fprintf(stderr, _(" if you're sure a package manager is not already\n"
+ " running, you can remove %s\n"), lockfile);
+ }
+ }
}
return (ret >= 0);
--
2.34.1