[Debian GNUstep maintainers] Bug#939119: closed by Yavor Doganov <yavor at gnu.org> (Bug#939119: fixed in gnustep-base 1.26.0-5)
Alan Jenkins
alan.christopher.jenkins at gmail.com
Thu Sep 19 17:18:15 BST 2019
On 19/09/2019 13:09, Yavor Doganov wrote:
> Control: reopen -1
> Control: found -1 1.26.0-5
>
> Alan Jenkins wrote:
>> But now I can see the code laid out, I'm not sure the newly added
>> preinst is doing anything.
> You are right that it does nothing :-(
>
> Oddly enough, I've been investigating this on a buster machine
> (upgraded from stretch) where all symlinks were K. It is quite
> possible that I've disabled it manually with update-rc.d and I just
> don't remember. However, on a stretch machine not yet upgraded to
> buster:
>
> yavor at bogdana:~$ find /etc/rc?.d -name \*gdomap
> /etc/rc0.d/K01gdomap
> /etc/rc1.d/K01gdomap
> /etc/rc2.d/S18gdomap
> /etc/rc3.d/S18gdomap
> /etc/rc4.d/S18gdomap
> /etc/rc5.d/S18gdomap
> /etc/rc6.d/K01gdomap
> yavor at bogdana:~$ grep ^ENABLED /etc/default/gdomap
> ENABLED=no
>
>> We only reset the symlinks - i.e. disable the init script - when the
>> [S]tart symlink does not exist - i.e. the init script is already
>> disabled?
> Stupid me.
You weren't the first person to suggest testing /etc/rc2.d/S??gdomap
:-). I always think this stuff is confusing. The important thing is to
ask for people to test it :-).
>
>> If we don't have an ENABLED= line, because we already hit this bug,
>> then I think we just don't have the information. We have to make the
>> choice.
> Right. And the default choice should be to disable the daemon.
>
>> Either preserve the current enabled status, as I do above. Or
>> check we don't have ENABLED=yes, then guess the user was in the
>> "99.5%", and force the service to be disabled.
> I prefer the latter.
1. My hopes had been raised to see something for this issue in Debian
10.x. Even if it was basically limited to documentation in NEWS and the
release notes. This would raise the question, would you use this
approach for a backport for 10.x? Or would that require something
different?
umm, and if we do disable in 10.x, I have a bonus question. Would we
need some code to make sure we didn't disable a second time on upgrade
to 11.x?
2. For my sake, I am very happy to see gdomap disabled on the next
upgrade :-).
Our defaults already mean that if you rely on gdomap, you need to know
that, and enable it. (And if you want network features, change
GDOMAP_ARGS. In a way, I think the docs make that sound like more
hassle than it is).
My only caveat is if you backported this approach to 10.x, I don't know
enough to guess exactly how many people will be annoyed.
I had another look regarding a clever automatic check we could use in
the preinst script. But I didn't come up with anything
3. Disclosure: I think this argument is not very strong:
> IOW, if the user wants the daemon running, chances are that he has
> already changed the default to ENABLED=yes and although it does
> nothing from the buster version onwards, it seems likely that he has
> preserved his modification to the /etc/default/gdomap file.
If you choose to see a three-way diff, and see the package wants to
remove ENABLED=, I think it's just as plausible you would have let the
package do that.
There might be a way to be really clever, although I do not advocate it
at all. Provide an upgrade prompt, that checks ENABLED= but otherwise
defaults to disabling gdomap. If a gdomap user tends to do upgrades
Fedora/PackageKit style, i.e. accept all the default prompts, that means
they will likely have preserved the ENABLED=yes :-). Non-gdomap users
will get it disabled again. At the cost of inflicting one more upgrade
prompt on a lot of people.
4. The implementation might be improved.
> How about this:
>
> if [ "$1" = "upgrade" ]; then
> if dpkg --compare-versions "$2" lt 1.26.0-6; then
> if [ -f /etc/default/gdomap ]; then
> . /etc/default/gdomap
> if [ "$ENABLED" != "yes" ]; then
> find /etc/rc?.d -name "*gdomap" -delete
> fi
> fi
> fi
> fi
I guess you did not prefer my super-cautious approach, sourcing the
config file inside brackets so it uses a sub-shell, and does not import
arbitrary variables from the file e.g. LD_PRELOAD= :-).
Anyway, in this more aggressive policy, I think it should remove the
links even if /etc/default/gdomap does not exist. I think that makes it -
if [ "$1" = "upgrade" ]; then
if dpkg --compare-versions "$2" lt 1.26.0-6; then
ENABLED=no
if [ -f /etc/default/gdomap ]; then
ENABLED="$( . /etc/default/gdomap && echo "$ENABLED")"
fi
if [ "$ENABLED" != "yes" ]; then
find /etc/rc?.d -name "*gdomap" -delete
fi
fi
fi
# or without using a subshell
if [ "$1" = "upgrade" ]; then
if dpkg --compare-versions "$2" lt 1.26.0-6; then
ENABLED=no
if [ -f /etc/default/gdomap ]; then
. /etc/default/gdomap
fi
if [ "$ENABLED" != "yes" ]; then
find /etc/rc?.d -name "*gdomap" -delete
fi
fi
fi
Thanks again for your hard work
Alan
More information about the pkg-GNUstep-maintainers
mailing list