[pacman-dev] [PATCH] Standardize output when db.lck is present

pangyanhan at gmail.com pangyanhan at gmail.com
Sat Aug 27 23:14:28 EDT 2011


From: Pang Yan Han <pangyanhan at gmail.com>

When db.lck file is present, pacman -Syy and other Sync operations involving
transactions show:

:: Synchronizing package databases...
error: failed to update core (unable to lock database)
error: failed to update extra (unable to lock database)
error: failed to update community (unable to lock database)
error: failed to update multilib (unable to lock database)
error: failed to synchronize any databases

Whereas pacman -U <pkg> shows:

error: failed to init transaction (unable to lock database)
  if you're sure a package manager is not already
  running, you can remove /var/lib/pacman/db.lck

which is much more meaningful. Standardize the output to that of pacman -U
when db.lck is present.

Reported-by: Allan McRae <allan at archlinux.org>
Signed-off-by: Pang Yan Han <pangyanhan at gmail.com>
---
 src/pacman/sync.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index ea32a26..37f6ecb 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -288,6 +288,15 @@ static int sync_synctree(int level, alpm_list_t *syncs)
 
 		ret = alpm_db_update((level < 2 ? 0 : 1), db);
 		if(ret < 0) {
+			enum _alpm_errno_t err = alpm_errno(config->handle);
+			pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to init transaction (%s)\n"),
+					alpm_strerror(err));
+			if(err == ALPM_ERR_HANDLE_LOCK) {
+				fprintf(stderr, _("  if you're sure a package manager is not already\n"
+						"  running, you can remove %s\n"),
+						alpm_option_get_lockfile(config->handle));
+				return 0;
+			}
 			pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to update %s (%s)\n"),
 					alpm_db_get_name(db), alpm_strerror(alpm_errno(config->handle)));
 		} else if(ret == 1) {
-- 
1.7.6.1.385.gb7fcd0



More information about the pacman-dev mailing list