Blob Blame History Raw
diff --git a/etckeeper-dnf/etckeeper.py b/etckeeper-dnf/etckeeper.py
index e8a1a51..7c3210b 100644
--- a/etckeeper-dnf/etckeeper.py
+++ b/etckeeper-dnf/etckeeper.py
@@ -7,30 +7,34 @@
 # Distutils code below was copied from etckeeper-bzr distributed with v1.15
 #
 
-from dnfpluginscore import logger
-
-import os
+import logging
+import subprocess
 import dnf
 
+logger = logging.getLogger('dnf.plugin')
+
 
 class Etckeeper(dnf.Plugin):
 
     name = 'etckeeper'
 
-    def _out(self, msg):
-        logger.debug('Etckeeper plugin: %s', msg)
+    def _run_command(self, command):
+        logger.debug('Etckeeper plugin: %s', command)
+        try:
+            with open("/dev/null", "wb") as devnull:
+                ret = subprocess.call(("etckeeper", command),
+                                      stdout=devnull, stderr=devnull,
+                                      close_fds=True)
+                if ret != 0:
+                    raise dnf.exceptions.Error('"etckeeper %s" returned: %d' % (command, ret))
+        except OSError as err:
+            logger.warning('Failed to run "etckeeper %s": %s' % (command, err))
 
     def resolved(self):
-        self._out('pre transaction commit')
-        command = '%s %s' % ('etckeeper', " pre-install")
-        ret = os.system(command)
-        if ret != 0:
-            raise dnf.exceptions.Error('etckeeper returned %d' % (ret >> 8))
+        self._run_command("pre-install")
 
     def transaction(self):
-        self._out('post transaction commit')
-        command = '%s %s > /dev/null' % ('etckeeper', "post-install")
-        os.system(command)
+        self._run_command("post-install")
 
 if __name__ == "__main__":
     from distutils.core import setup