[Bug 2061825] Re: [SRU] ucf fails to work for local diversions on Jammy
Robie Basak
2061825 at bugs.launchpad.net
Wed May 1 15:35:06 UTC 2024
I wondered if ucf is expected to handle dpkg-divert -ed files in the
first place, since that seemed odd to me. It does seem like that's a
feature the code was intended to support, although it's unclear to me if
it ever worked, and it's not really documented anywhere I can find
except that is implied by the manpage. So it seems like it's debatable
as to whether this is a bugfix or a request to add a feature.
Looking at your description of "Impact", please could you expand on what
you're trying to achieve? Why are you using dpkg-divert to divert
configuration files installed by ucf? Did this method work in a previous
release? Why aren't you writing chrony.conf and then using
UCF_FORCE_CONFFOLD=1 instead, or just overwriting chrony.conf after
installation, given that ucf is intended to gracefully handle local
configuration file changes?
I ask because this seems like a risky change to make. ucf is widely
used, we don't have the means to test a broad set of uses, it ships with
no automated tests, and this particular "fix" was uploaded in a Debian
NMU that has yet to be acknowledged by the maintainer.
I'd like to understand the use case and why it is essential to fix this
in order to weigh up the risk please.
If we do decide to go ahead, then there are a few things that need
fixing, please.
The Test Plan must include the common case - that ucf continues to work
as expected when there is no diversion. Since there are no automated
tests whatsoever, please include exercise of the common cases that ucf
handles (installation, upgrade when packaging changes the configuration
file, with and without local user modification, package removal/purge,
etc).
Please fix the changelog description to explain what the actual user
story is that is being fixed, so that users can easily see if the fix is
relevant to them or not. For example: "Fix handling of configuration
files diverted with dpkg-divert (LP: #...)". Feel free to mention other
things like the syntax error if you wish, but just saying that you're
fixing a syntax error doesn't really convey anything useful to most
readers.
** Changed in: ucf (Ubuntu Jammy)
Status: In Progress => Incomplete
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ucf in Ubuntu.
https://bugs.launchpad.net/bugs/2061825
Title:
[SRU] ucf fails to work for local diversions on Jammy
Status in ucf package in Ubuntu:
Fix Released
Status in ucf source package in Jammy:
Incomplete
Bug description:
[ Impact ]
When a dpkg-diversion is used to setup a package diversion and ucf for managing
the configuration files for chrony package, the postinst script of ucf fails
when installing chrony.
This issue isn't specific to chrony but can happen for any package whose
config files are managed by ucf.
This affects users on Jammy who use ucf. Newer versions of ucf have this bug
fixed already.
[ Test Plan ]
1. Create a Jammy container or VM
2. Setup a diversion for chrony.conf: dpkg-divert --package chrony --add --rename --divert /etc/chrony/chrony.conf.custom /etc/chrony/chrony.conf
3. Install chrony: apt install chrony -y
4. Notice the postinst script fail with syntax errors such as:
```
Preparing to unpack .../chrony_4.2-2ubuntu2_amd64.deb ...
Unpacking chrony (4.2-2ubuntu2) ...
Setting up chrony (4.2-2ubuntu2) ...
/usr/bin/ucf: 444: [: missing ]
grep: ]: No such file or directory
/usr/bin/ucf: 444: [: missing ]
grep: ]: No such file or directory
```
5. Install the package with the fix from the PPA: https://launchpad.net/~pponnuvel/+archive/ubuntu/ucf-jammy (to be replaced with the package from the -proposed pocket)
6. Repeat the same from steps 1 to 4 and notice no failures at step4.
[ Where problems could occur ]
Can further introduce similar bugs if the patch contains similar syntax
errors. Consequently local diversion may not take effect for packages
using ucf to manage configuration files.
[ Other Info ]
Upstream bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979354
It's been fixed in version ucf/3.0043+nmu1. Lunar/Mantic/Noble all have the
ucf version with this patch.
Affects Jammy only and thus backported to only Jammy.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ucf/+bug/2061825/+subscriptions
More information about the foundations-bugs
mailing list