lubuntu-update-notifier provides no good way to resolve a forcibly terminated system update
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
lubuntu-update-notifier (Ubuntu) |
Fix Released
|
High
|
Aaron Rainbolt | ||
Focal |
Fix Released
|
High
|
Aaron Rainbolt | ||
Jammy |
Fix Released
|
Critical
|
Aaron Rainbolt | ||
Kinetic |
Fix Released
|
High
|
Aaron Rainbolt | ||
Lunar |
Fix Released
|
High
|
Aaron Rainbolt |
Bug Description
Warning, this is a very long bug report as the details are complex and the reasoning behind the resolution is just as complex. In it, I propose the addition of two new features to lubuntu-
[ Impact ]
The lubuntu-
In current versions of lubuntu-
While it may seem like interruptions to update installation would be very rare, there is currently a situation in Jammy at least (and possibly in other versions of Lubuntu) that always results in an interrupted update installation. Namely, until version 0.5, lubuntu-
Because the version of lubuntu-
This seems like it would be fixable by simply releasing an update to lubuntu-
It might seem that this problem could be bypassed by using a creative postinst script in lubuntu-
This leaves only one good workaround that the Lubuntu Development team can see so far, and that is to add functionality to lubuntu-
This SRU backports both new features (the configuration conflict prompt handling and the interrupted update repairing) to the Kinetic and Jammy releases. It may also need to cover Focal as well, but given the very short amount of support time left in Lubuntu for Focal, it might be a better use of developer resources to skip it. Whether the backport will be done depends on what the Ubuntu SRU team believes is good, and how easy it is to backport these fixes to the older version of lubuntu-
[ Test plan ]
This bug is easiest to watch in action using Lubuntu Jammy. It is possible to replicate the problem in Kinetic, but it is more difficult as SDDM does not appear to generate a configuration conflict prompt in Kinetic.
For the update unbreaking feature:
Jammy/Kinetic instructions:
1. Download a Lubuntu 22.04.1 or 22.10 ISO, and install it into a virtual machine.
2. Install all available updates.
3. Reboot the machine.
4. Click the Application Menu, search for "Software", and click on "Software Sources".
5. Enter the VM's password and press Enter.
6. Click the Updates tab, and check "Pre-released updates". Then click the Close button - the system should update its software database.
7. If you're testing with Kinetic, run "sudo vim /usr/share/
8. Click the Application Menu, and search for "Apply", then click "Apply Full Upgrade".
9. Enter the VM's password again and press Enter.
10. Wait for the upgrade to stall on "Waiting for configuration file prompt" (or something worded similarly - I can't remember the exact wording at the moment).
11. Open a terminal, and forcibly reboot the system with "systemctl reboot -i". (You can do a regular reboot if testing on Kinetic.)
12. When the VM reboots, click the Application Menu, search for "Apply", click "Apply Full Upgrade", and enter the VM's password and press Enter again.
13. You should watch the interrupted upgrade finish, and then the system search for (and if necessary, install) any new updates.
Focal instructions:
1. Download a Lubuntu 20.04.5 ISO, and install it into a virtual machine.
2. Enable -proposed.
3. Run "sudo nano /etc/apt/
4. Click the Application Menu, search for "Apply" and click "Apply Full Upgrade". Then enter the VM's password and press Enter.
5. Wait for the upgrade to freeze.
6. Run "sync" in a terminal, then forcibly power off the VM.
7. Boot the VM. You will *probably* run into a kernel panic, due to a new kernel being present without the initramfs for it having been generated.
8. Force poweroff the VM again, then turn it on, select "Advanced Options for Ubuntu", and boot into the older kernel normally (not using recovery mode).
9. Repeat step 4 (running "Apply Full Upgrade"). The interrupted upgrade should be repaired and, if needed, any new updates installed.
If all goes as planned, the system should be fully updated and entirely functional after this.
For the configuration conflict prompt handling feature:
Focal/Jammy/Kinetic instructions
1. Download a Lubuntu 22.04.1 or 22.10 ISO, and install it into a VM.
2. Install all available updates and reboot the VM. (NOTE: Skip this step if testing with Focal.)
3. Click on the Application Menu, search for "Software", click "Software Sources", enter your VM's password, and press Enter.
4. Click the Updates tab, check "Pre-released updates", and then click the Close button - the system should update its software database.
5. Open a terminal and run "sudo apt install lubuntu-
6. If you're testing with Kinetic, run "sudo vim /usr/share/
7. Click the Application Menu, search for "Apply", click "Apply Full Upgrade", type the VM's password, and press Enter.
8. Wait for a prompt to appear asking whether you want to keep or overwrite a configuration file.
9. Choose your desired option, and allow the upgrade to finish.
10. Check the /usr/share/
If all goes as planned, the system should be fully updated and entirely functional after this. Additionally, the file you check in step 10 should have contents that match expectations.
[ Where problems could occur ]
As this SRU introduces two new features, it is possible that a coding error in either new feature could result in any of a number of problems, such as:
- Failure to overwrite configuration files when asked to
- Overwriting of configuration files when asked not to
- Failure to repair the system after an interrupted upgrade
- Failed, hung, or otherwise messed-up updates during a normal update procedure
All of these problems are either glaringly obvious or will be easily caught using the above test plan, so it should be easy to catch these problems and fix them should they be discovered during SRU verification.
[ Other Info ]
I would like to make it very clear, that while SDDM is used extensively as part of the testing above, **SDDM has in no way caused a regression in lubuntu-
Changed in lubuntu-update-notifier (Ubuntu Jammy): | |
status: | New → Confirmed |
importance: | Undecided → Critical |
Changed in lubuntu-update-notifier (Ubuntu Kinetic): | |
status: | New → Confirmed |
importance: | Undecided → High |
Changed in lubuntu-update-notifier (Ubuntu Lunar): | |
importance: | Critical → High |
Changed in lubuntu-update-notifier (Ubuntu Kinetic): | |
assignee: | nobody → Aaron Rainbolt (arraybolt3) |
Changed in lubuntu-update-notifier (Ubuntu Jammy): | |
assignee: | nobody → Aaron Rainbolt (arraybolt3) |
Changed in lubuntu-update-notifier (Ubuntu Lunar): | |
status: | Confirmed → In Progress |
Changed in lubuntu-update-notifier (Ubuntu Lunar): | |
status: | In Progress → Fix Committed |
Changed in lubuntu-update-notifier (Ubuntu Kinetic): | |
status: | Confirmed → Fix Committed |
status: | Fix Committed → In Progress |
Changed in lubuntu-update-notifier (Ubuntu Jammy): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in lubuntu-update-notifier (Ubuntu Focal): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Aaron Rainbolt (arraybolt3) |
description: | updated |
Completed both tests as per above on Lubuntu Jammy 22.04.1 with no errors..for the second test overwrite was chosen (Xsetup file).