[Bug 2061825] Re: [SRU] ucf fails to work for local diversions on Jammy
Ponnuvel Palaniyappan
2061825 at bugs.launchpad.net
Fri May 17 12:26:05 UTC 2024
@Robie
1. From man page does allude to that.
" -P foo, --package foo
Don't follow dpkg-divert diversions by package foo when updating configuration files.
"
which implies ucf should (and does) respect/handle diversions.
2. Further: "ucf should respect dpkg-divert" (refer https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477773)
indicates it is a feature and has been supported since 3.0040 and has been accepted by the upstream maintainer.
3. Likewise the most recent change by the upstream maintainer is also addressing similar issue:
```
ucf (3.0043) unstable; urgency=high
* The argument to dpkg-divert needs to be the actual file name, not the
fully escaped regexp safe one.
* Bug fix: "dpkg-divert error when upgrading grub with diverted config",
thanks to debian at project-mindfuck.org.uk</a>; (Closes: #962818).
-- Manoj Srivastava <srivasta at debian.org> Mon, 15 Jun 2020 22:37:53 -0700
```
So I believe ucf is expected handle diversions even if this specific
patch wasn't acked by the upstream maintainer.
> If we do decide to go ahead, then there are a few things that need
fixing, please.
Updated the bug description as well as the changelog (re-uploaded).
FWIW, we do have NMU ucf in several Ubuntu releases in general:
```
ucf | 3.0027+nmu1 | trusty | source, all
ucf | 3.0036 | xenial | source, all
ucf | 3.0038 | bionic | source, all
ucf | 3.0038+nmu1 | focal | source, all
ucf | 3.0043 | jammy | source, all
ucf | 3.0043+nmu1 | mantic | source, all
ucf | 3.0043+nmu1 | noble | source, all
ucf | 3.0043+nmu1 | oracular | source, all
And specifically, the NMU versions on mantic, noble, and Oracular has _this patch_ already (which I am backporting here to Jammy). So I think it's reasonable to assume the backport is safe.
Please let me know if there are further concerns.
** Description changed:
[ 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.
+ "ucf should respect dpkg-divert" (refer https://bugs.debian.org/cgi-
+ bin/bugreport.cgi?bug=477773) indicates it is a feature and has been
+ supported since 3.0040 and has been accepted by the upstream maintainer.
+
+
[ Test Plan ]
+ Common case.
+ A1. Create a Jammy container or VM
+ A2. Install chrony: apt install chrony -y
+ A3. Confirm ucf works with no failures (including syntax errors)
+ B1. Modify the configuration: /etc/chrony/chrony.conf
+ B2. Remove chrony package and re-install
+ B3. Confirm it still works.
+
+ B. Case when a diversion is in place.
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.
** Bug watch added: Debian Bug tracker #477773
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477773
** Patch added: "lp2061825.debdiff"
https://bugs.launchpad.net/ubuntu/jammy/+source/ucf/+bug/2061825/+attachment/5779403/+files/lp2061825.debdiff
** Attachment removed: "debdiff_2061825_new.txt"
https://bugs.launchpad.net/ubuntu/jammy/+source/ucf/+bug/2061825/+attachment/5770060/+files/debdiff_2061825_new.txt
** Attachment removed: "debdiff.txt"
https://bugs.launchpad.net/ubuntu/jammy/+source/ucf/+bug/2061825/+attachment/5767388/+files/debdiff.txt
** Changed in: ucf (Ubuntu Jammy)
Status: Incomplete => In Progress
--
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:
In Progress
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.
"ucf should respect dpkg-divert" (refer https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=477773) indicates it is a feature and has been
supported since 3.0040 and has been accepted by the upstream
maintainer.
[ Test Plan ]
Common case.
A1. Create a Jammy container or VM
A2. Install chrony: apt install chrony -y
A3. Confirm ucf works with no failures (including syntax errors)
B1. Modify the configuration: /etc/chrony/chrony.conf
B2. Remove chrony package and re-install
B3. Confirm it still works.
B. Case when a diversion is in place.
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