From Fedora Project Wiki
There are two options for scriptlets depending on whether we should care about user configuration of what services start in the past.
Start over fresh
%post if [ $1 -eq 1 ] ; then # Initial installation # If a package is allowed to autostart: /bin/systemctl enable foo.service >/dev/null 2>&1 || : # No autostart: # /bin/systemctl daemon-reload >/dev/null 2>&1 || : fi # Note: the NEVR in trigger scripts should all be the version in # which the package switched to systemd unit files and the comparision # should be less than. Using <= the last version with the sysV script won't # work for several reasons: # 1) disttag is different between Fedora releases # 2) An update in an old Fedora release may create a newer NEVR %triggerun -- foo < 1.0-2 # Run this because the chkconfig --del in the SysV providing package won't # fire unless the package is removed /sbin/chkconfig --del bar >/dev/null 2>&1 || : # I think that we need this as well # /bin/systemctl try-restart foo.service >/dev/null 2>&1 || : # If the package is allowed to autostart, do the following /bin/systemctl enable foo.service >/dev/null 2>&1 /bin/systemctl daemon-reload >/dev/null 2>&1 || : (The %preun and %postun will remain as they are in the current proposal) (Add separate subpackage stuff too)
Preserve user defaults
%triggerun -- foo < 1.0-2 /sbin/chkconfig --del bar >/dev/null 2>&1 || : if chkconfig --level --no-redirect 1 foo ; then ln -sf /lib/systemd/system/foo.service /etc/systemd/system/rescue.target.wants/ 2>&1 >/dev/null multiuser=0 if chkconfig --level 3 foo; then ln -sf /lib/systemd/system/foo.service /etc/systemd/system/multi-user.target.wants/ 2>&1 >/dev/null multiuser=1 fi if chkconfig --level 5 foo; then # If it's already in multi-user, it will be inherited automatically if [ $multiuser -eq 0 ] ; then ln -sf /lib/systemd/system/foo.service /etc/systemd/system/graphical.target.wants/ 2>&1 >/dev/null fi else if [ $multiuser -eq 1 ] ; then # We have the option of disabling the service in graphical here to # match what the user explicitly customized their system to like # this: ln -sf /dev/null /etc/systemd/system/graphical.target.wants/foo.service # But we could also decide that this is not something that we're going # to migrate (as systemd itself sets graphical up as a strict # superset of multi-user). fi fi /bin/systemctl daemon-reload >/dev/null 2>&1 || :