diff --git a/pisi/api.py b/pisi/api.py index 01c5ed60..00235d5f 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -54,7 +54,11 @@ def locked(func): Decorator for synchronizing privileged functions """ def wrapper(*__args,**__kw): - lock = file(pisi.util.join_path(pisi.context.config.lock_dir(), 'pisi'), 'w') + try: + lock = file(pisi.util.join_path(pisi.context.config.lock_dir(), 'pisi'), 'w') + except IOError: + raise pisi.errors.PrivilegeError(_("You have to be root for this operation.")) + try: fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) try: diff --git a/pisi/errors.py b/pisi/errors.py index 4d46c1bc..7e7cb2f8 100644 --- a/pisi/errors.py +++ b/pisi/errors.py @@ -11,3 +11,6 @@ class AnotherInstanceError(Exception): pass + +class PrivilegeError(Exception): + pass