Re: restarting instanced systemd services on upgrade
Hi Simon,
> Yes it is, but you started this thread by asking for advice about how
> to restart an instanced *system* service on upgrade, which gave me the
> impression that you consider the system service to be what you recommend
> to users as the most normal way to run this onedrive service.
Well, I don't have a strong feeling about this. I guess because *I* use
the instanced *system* service I somehow tend to prefer it. I don't need
the notifications, but I want to sync stuff even when I am not logged
in.
> If I'm understanding correctly, each user who wants to run this service
> in monitor mode needs to either:
> - enable it as a systemd user service (using the unit in
> /usr/lib/systemd/user)
> or
> - (ask their sysadmin to) enable it as an instanced system service with
> instance name = their username (using the unit in /lib/systemd/system),
> or
> - run it in some way that doesn't involve systemd
Yes, exactly.
> but they need to choose exactly one of those ways, and it is pointless
> to have more than one for the same user. Is that right?
Yes, absolutely. In fact, running two instances via different methods
will crash one ;-)
> If I'm correct to think that, then I would say that you should
> recommend the user-service as the most-preferred way, with the others
> as alternatives for people with unusual needs.
Ok, thanks. I will adjust the documentation accordingly.
> > That is also the reason why I don't see any use for a system service.
>
> Now I'm confused. You started this thread asking for advice about how to
Sorry for the confusion, I thought about a non-instanced system service
(/lib/systemd/system/onedrive.service). We don't ship it, and I don't
think it makes sense to ship it.
The *instanced* system service OTOH is something I would keep (at least
for me ;-)
> Is what you mean here: a user-service is a viable route to use this
> program; and an instanced system service that is run per user and
> behaves as though it wants to be a user-service is also viable; but you
> see no use for a system service that is genuinely running on behalf of
> the entire multi-user system, similar to atd.service or cups.service
> or rsyslog.service?
Yes. That explains is correclty.
> OK, that makes sense. You should be able to achieve this with:
>
> dh_installsystemduser --no-enable
Hmm, I have
override_dh_installinit:
dh_installinit --no-start --no-enable
but the actual .service files are already installed by upstream's make
install.
Is there a considerable difference?
> A few packages use killall or pkill to tell user services to restart or
> reload, but that isn't exactly robust: it relies on rummaging through
Agreed (and I don't like it).
> Honestly, the more experience I get in distro development, the more
> convinced I am that "reboot to update" is the robust thing to do for
Agreed on that.
> > su - $user -c "insync quit"
>
> Defnitely please don't do this. Having system-level code reach into
I don't do it, that is too crazy a code for me to see in postinst. But
it is what is shipped in insync (not in Debian!).
All the best
Norbert
--
PREINING Norbert https://www.preining.info
Accelia Inc. + IFMGA ProGuide + TU Wien + JAIST + TeX Live + Debian Dev
GPG: 0x860CDC13 fp: F7D8 A928 26E3 16A1 9FA0 ACF0 6CAC A448 860C DC13
Reply to: