Package lacks conffile handling, breaking SRU major version updates
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
walinuxagent (Ubuntu) |
In Progress
|
High
|
Łukasz Zemczak |
Bug Description
For example:
At some point walinuxagent started doing "auto updating", which we disabled in the distribution (see bug 1650522). We disabled by patching the conffile to explicitly set AutoUpdate=n.
However, if a user had modified that conffile and then automatically updates (for example Xenial has unattended-upgrades enabled by default), then either the user won't see any conffile prompt, or could see one, won't realise the significance of it and choose the default, which is to keep the old configuration.
Then the code will default to AutoUpdate=y because it sees no explicit AutoUpdate=n in the conffile. User behaviour will change from not auto-updating to auto-updating as a result of the SRU.
There are two problems here:
1) SRUs keep changing conffiles. The moment a user changes a conffile, that will stop happening for automatic updates. Then there's no point in changing conffiles for that set of users. If that's OK, then was there any need to change the conffile in the first place?
2) The patch for disabling AutoUpdate should change the default as interpreted by the code when not specified in the conffile, rather than trying to patch the conffile.
Let's track problem 1 in this bug. I filed bug 1657524 to track problem 2.
Changed in walinuxagent (Ubuntu): | |
assignee: | nobody → Łukasz Zemczak (sil2100) |
status: | New → Confirmed |
Changed in walinuxagent (Ubuntu): | |
status: | Confirmed → In Progress |
To fix this, I suggest that the defaults be adjusted so the conffile is really just for local overrides rather than distribution- shipped defaults. You could patch upstream to change the defaults to what you want so shipping a contentful conffile becomes unnecessary. Or you could add support to have distribution defaults ship somewhere read-only (eg. /usr/share) and have /etc/waagent.conf available for local overrides. For example, systemd does this with /lib/systemd/system and /etc/systemd/ system. Or you could use a conf.d scheme, though I think that would only mitigate the problem rather than solve it.