[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: