Bug 2048002

Summary: bad systemctl command in preuninstall scriptlet
Product: Red Hat Enterprise Linux 9 Reporter: Jiri Jaburek <jjaburek>
Component: tog-pegasusAssignee: Vitezslav Crhonek <vcrhonek>
Status: CLOSED ERRATA QA Contact: Evgeny Fedin <efedin>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 9.0CC: efedin
Target Milestone: rcKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: tog-pegasus-2.14.1-64.el9 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-05-17 14:06:59 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jiri Jaburek 2022-01-29 03:07:38 UTC
Description of problem:

When removing tog-pegasus, I see this warning:

Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: tog-pegasus-2:2.14.1-63.el9.x86_64                     1/4 
Failed to disable unit: Unit file stop.service does not exist.

  Erasing          : tog-pegasus-2:2.14.1-63.el9.x86_64                     1/4 
  Running scriptlet: tog-pegasus-2:2.14.1-63.el9.x86_64                     1/4 
  Erasing          : tog-pegasus-libs-2:2.14.1-63.el9.x86_64                2/4 
  Running scriptlet: tog-pegasus-libs-2:2.14.1-63.el9.x86_64                2/4 
  Erasing          : net-snmp-libs-1:5.9.1-7.el9.x86_64                     3/4 
  Erasing          : openslp-2.0.0-30.el9.x86_64                            4/4 
  Running scriptlet: openslp-2.0.0-30.el9.x86_64                            4/4 


That likely comes from

preuninstall scriptlet (using /bin/sh):
 
if [ $1 -eq 0 ] && [ -x /usr/bin/systemctl ]; then 
    # Package removal, not upgrade 
    if [ -d /run/systemd/system ]; then 
          /usr/bin/systemctl --no-reload disable --now stop tog-pegasus.service || : 
    else 
          /usr/bin/systemctl --no-reload disable stop tog-pegasus.service || : 
    fi 
fi 


Note that the scriptlet is effectively doing:

  systemctl disable stop tog-pegasus.service

which is obviously invalid. Use disable --now to achieve the desired functionality.


Version-Release number of selected component (if applicable):
tog-pegasus-2.14.1-63.el9

Comment 1 Vitezslav Crhonek 2022-01-31 06:50:28 UTC
Thanks, reproduced.

Comment 2 Vitezslav Crhonek 2022-01-31 10:04:37 UTC
It's an oversight in spec file:

$ cat tog-pegasus.spec
...
%preun
%systemd_preun stop tog-pegasus.service
...

"stop" shouldn't be there.

Comment 10 errata-xmlrpc 2022-05-17 14:06:59 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: tog-pegasus), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:2649