Ewoud Kohl van Wijngaarden writes:
On Fri, Mar 18, 2022 at 06:22:08PM -0400, Sam Varshavchik wrote:
> The only thing that
https://docs.fedoraproject.org/en-US/packaging-
> guidelines/Scriptlets/ tells me to do is to put %systemd_postun_with_restart
> in my %post. However:
>
> 1) systemd complains that it wants a daemon-reload, in order to pick up an
> updated .service file
>
> 2) I still must manually run systemctl reload-or-restart --marked, in order
> to actually restart an updated service
>
> It seems to be there's a missing step, in here. By comparison I prepared
> comparable .deb packages for Ubuntu, using dh_installsystemd in the install
> script. The end result:
>
> A) The initial .deb install enabled and started the service.
>
> B) Bumping the release, rebuilding, and installing the newer package results
> in an automatic daemon-reload and restart, restarting the service.
>
> Overall .deb's systemd integration seems to go smoother (compared to the
> rest of the .deb packaging process) than rpm's.
>
> Is there a specific reason why %systemd_postun_with_restart stops before
> finishing the job? Am I missing something that I can install, to have this
> happen auto-magically?
I think daemon-reload changed to file triggers in systemd 228:
https://github.com/systemd/systemd/commit/
873e413323dfff4023604849c70944674ae5cd29
However, the scriptlets documentation[1] states to use %systemd_post with
%post and %systemd_postun_with_restart with %postun. %Perhaps that you're
using %systemd_postun_with_restart in %post is the source of your problems?
No, my invocation is in %postun. Furthermore, it wouldn't matter, since at
%post time the new package and the new service unit should already be
installed and restartable.
And, as I wrote:
> 1) systemd complains that it wants a daemon-reload, in order to
pick up an
> updated .service file
If ot was "changed to file triggers", well, it's not working since nothing
is getting triggered. Furthermore, %systemd_postun_with_restart runs:
/usr/lib/systemd/systemd-update-helper mark-restart-system-units
which does:
systemctl set-property "$unit" Markers=+needs-restart &
That's all it does. Then, as I wrote:
> 2) I still must manually run systemctl reload-or-restart
--marked, in order
> to actually restart an updated service
So, the shipped systemd scriptlets are still, very much, under an impression
that explicit action needs to be taken to restart and/or reload
updated .services. But, nothing gets reloaded. The .service files gets
marked for a restart, but, from what I can tell, nothing ever gets restarted.