Browse Source

dnf plugin: don't try to execute qrexec if service is not running

Needed for QubesOS/qubes-issues#4867
Frédéric Pierret (fepitre) 3 years ago
parent
commit
a8ab8d4eff
1 changed files with 8 additions and 0 deletions
  1. 8 0
      package-managers/dnf-qubes-hooks.py

+ 8 - 0
package-managers/dnf-qubes-hooks.py

@@ -28,6 +28,10 @@ import subprocess
 
 PLUGIN_CONF = 'qubes-hooks'
 
+def is_active(service):
+    status = subprocess.call(["systemctl", "is-active", "--quiet", service])
+    return status == 0
+
 class QubesHooks(dnf.Plugin):
     name = 'qubes-hooks'
 
@@ -37,6 +41,8 @@ class QubesHooks(dnf.Plugin):
         self.log = logging.getLogger('dnf')
 
     def resolved(self):
+        if not is_active("qubes-qrexec-agent"):
+            return
         # in case of no action to do, transaction() hook won't be called;
         # report updates availability here - especially when everything is up
         # to date - to clear updates-available flag
@@ -53,6 +59,8 @@ class QubesHooks(dnf.Plugin):
             ])
 
     def transaction(self):
+        if not is_active("qubes-qrexec-agent"):
+            return
         if LooseVersion(dnf.const.VERSION) < '2.0.0':
             config = self.read_config(self.base.conf, PLUGIN_CONF)
         else: