Systemd

Currently Mer packages require systemd in the build phase to use the systemd macros. This may change.

Until then your spec/yaml should contain:

BuildRequires: systemd

System units should be installed to:

%{_unitdir}

User session units need: %define _userunitdir %{_libdir}/systemd/user/

Note that no units should ever be installed into /etc/

Links should almost never be installed into systemd/system/*.wants ; instead use the [Install] section of the unit.

All the %preun %post and %postun macros must be provided.

The %preun macro is simply

%systemd_preun my.service

The %post macro

%systemd_post my.service

The %postun is typically

%systemd_postun_with_restart my.service

For services that don't support a restart (eg if clients have stateful connections) then use:

%systemd_postun my.service

These macros support the systemd 'preset' for controlling service policy. This essentially decides whether services run automatically when installed. Packages *must not* install preset files - the vendor should provide these.