Initscript migration to systemd: triggerun called on downgrade
iarnell at gmail.com
Fri Sep 2 08:33:12 UTC 2011
On Fri, Sep 2, 2011 at 9:53 AM, Petr Pisar <ppisar at redhat.com> wrote:
> On 2011-09-01, Bill Nottingham <notting at redhat.com> wrote:
>> Petr Pisar (ppisar at redhat.com) said:
>>> I'm migrating quota_nld service (provided by quota_nld subpackage of
>>> quota spec) to systemd.
>>> Offical howto <https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Packages_migrating_to_a_systemd_unit_file_from_a_SysV_initscript> recommends:
>>> %triggerun -- httpd < 1.0-2
>>> # Save the current service runlevel info
>>> where `httpd < 1.0-2' are httpd packages older then 1.0-2 under
>>> uninstallation and `1.0-2' is first httpd version with systemd support.
>>> I modifed quota accoding this how-to, build a package (everything
>>> locally) and I play with upgrades/downgrades between current F17 version
>>> and this new one.
>>> Everything works except the triggerun script is called even if doing
>>> downgrade. Is it intentional and I do not understand triggers, or is it
>>> a bug in RPM?
>> The above triggerun would be called on any uninstallation of httpd less
>> than 1.0-2, whether you're upgrading or downgrading.
> And that's the point. If only httpd-1.0-2 is installed and you do
> downgrade to httpd-1.0-1, then the triggerun will be executed which
> is what I do not expect because no httpd less then 1.0-2 can be
> uninstalled at the time.
The trigger is run in two situations. When the source package (i.e.
the package containing the triggerun, in this case, httpd-1.0-2) is
already installed and the target (httpd < 1.0-2) removed, or when the
target is already installed and the source removed. When downgrading,
the source package "httpd-1.0-2" is being uninstalled while the target
"httpd < 1.0-2" is already present on the system. You could use
triggerpostun instead - that will run only after the target is
removed, but not when the source package is removed. See "triggers"
More information about the devel