group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #30053
[Bug 1823872] Re: Fixing fsfreeze-hook can break unattended upgrades
This bug was fixed in the package unattended-upgrades -
1.5ubuntu3.18.10.4
---------------
unattended-upgrades (1.5ubuntu3.18.10.4) cosmic; urgency=medium
* Detect changes to moved conffiles (LP: #1823872)
* Add tests for checking conffile moves.
Build depend on and use equivs to generate new test packages
* Detect unchanged moved conffiles.
When a package moves a conffile properly without any change no conffile
prompt needs to be shown thus the package can be upgraded unattended.
(LP: #1823872)
- Split() conffile data to set of names only once
- Don't parse dpkg conffile db when there are no conffiles in the package
* Skip sending email when no package had to be installed, upgraded or removed
(LP: #1821103) (Closes: #924554)
* Make sure autoremovals don't start with a dirty cache and remove other
packages (LP: #1824341)
* Continue applying minimal sets when one set can't be marked for upgrade.
Thanks to Anderson Luiz Alves for the patch, it needed minor modifications
(LP: #1824341)
* Stop raising NoAllowedOriginError when marking packages to upgrade/install
fails (LP: #1824876)
* Adjust only transitive dependencies in the fallback when a package from an
allowed origin can't be marked to install/upgrade.
This is a much lighter approach than marking every upgradable package
because the full fallback was triggered on packages held back as well,
using an excessive amount of CPU time.
Also it crashed with packages not having any version in allowed origins.
(LP: #1824804, #1824949)
- Follow all kinds of transitive dependencies when adjusting dependencies
- Don't crash collecting transitive dependencies when package has no
candidate (LP: #1825886)
* Skip trying to upgrade held packages in call_adjusted() (LP: #1824804)
* Use mark_install_adjusted() in rewind_cache()
The original cache had packages marked with adjustments thus rewinding
should also do adjustments to reach the same state.
Also not using mark_install_adjusted() crashes when apt raises error on
held packages. (LP: #1826157)
- test_rewind: Update test to check if adjustend rewinding took place
-- Balint Reczey <rbalint@xxxxxxxxxx> Fri, 26 Apr 2019 18:55:30 +0200
** Changed in: unattended-upgrades (Ubuntu Cosmic)
Status: Fix Committed => Fix Released
** Changed in: unattended-upgrades (Ubuntu Bionic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1823872
Title:
Fixing fsfreeze-hook can break unattended upgrades
Status in unattended-upgrades package in Ubuntu:
Fix Released
Status in unattended-upgrades source package in Trusty:
Confirmed
Status in unattended-upgrades source package in Xenial:
Fix Released
Status in unattended-upgrades source package in Bionic:
Fix Released
Status in unattended-upgrades source package in Cosmic:
Fix Released
Status in unattended-upgrades source package in Disco:
Fix Released
Bug description:
[Impact]
* If an update has a new conffile at a path that in a former version was
a directory like
old: /a/b/c
new: a/b
Here b is the new file name and was a directory in the old version.
Then unattended upgrades breaks on installing such a package.
* a recent qemu update has such a case and due to that triggered the
issue in >=Bionic
* The fix is to harden unattended upgrades to be able to handle the case
without aborting.
[Test Case]
Get a qemu guest e.g. of Bionic before the update to 1:2.11+dfsg-1ubuntu7.12
That can be done with:
$ time uvt-simplestreams-libvirt --verbose sync --source http://cloud-images.ubuntu.com/daily arch=amd64 label=daily release=bionic
$ uvt-kvm create --password ubuntu bionic-testuu arch=amd64 release=bionic label=daily
Log in and apt update & upgrade all packages, then Install the release level qemu in there.
$ uvt-kvm ssh bionic-testuu
$ sudo apt update
$ sudo apt dist-upgrade
$ sudo apt install unattended-upgrades
$ sudo apt install qemu-guest-agent=1:2.11+dfsg-1ubuntu7
All before was preparation, now force the unattended upgrade to trigger the bug.
$ sudo unattended-upgrade -d
With the bug you'll find some error like:
found pkg: qemu-guest-agent
conffile line: /etc/init.d/qemu-guest-agent f61a64ac1e48993023018fd1cff85191
current md5: f61a64ac1e48993023018fd1cff85191
conffile line: /etc/qemu/fsfreeze-hook/fsfreeze-hook 15f6ff42cbc5550a07ee21c2a471d905
/etc/qemu/fsfreeze-hook/fsfreeze-hook not in package conffiles /etc/init.d/qemu-guest-agent
/etc/qemu/fsfreeze-hook
found conffile /etc/qemu/fsfreeze-hook in new pkg but on dpkg status
Traceback (most recent call last):
File "/usr/bin/unattended-upgrade", line 2057, in <module>
sys.exit(main(options))
File "/usr/bin/unattended-upgrade", line 1773, in main
if conffile_prompt(item.destfile):
File "/usr/bin/unattended-upgrade", line 988, in conffile_prompt
with open(prefix + conf_file, 'rb') as fp:
IsADirectoryError: [Errno 21] Is a directory: '/etc/qemu/fsfreeze-hook'
[Regression Potential]
* The fix is trying to detect moved conffiles by looking for /etc/foo/foo when the new package ships /etc/foo and /etc/foo is not a known conffile and also checking the renames in the opposite direction.
The potential regression is breaking the logic for detecting changed conffiles and either holding back a package for no reason or trying to install a package with a modified conffile on the system and aborting the upgrade in the middle due to the appearing conffile prompt. To avoid such regressions the test_conffile.py tests are extended to cover rename scenarios.
[Other Info]
* n/a
---
As reported on https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1820291/comments/20
We fixed an issue and we added workrounds since basic mv_conffile coudn't handle it and did all sort of upgrade tests.
That all worked fine and moved the conffile.
It was now reported that due to some pre-checks that unattended
upgrades might do this might do some checks on its own.
Next step:
- check unattended upgrades through this change
- check if it only affects cases were the former config was modified (minority) or the default file layout (majority)
--- original report copied ---
just wanted to add: This bug also crashes unattended-upgrade and thus
prevents security updates on 18.04:
root@mailin1:~# unattended-upgrade
Traceback (most recent call last):
File "/usr/bin/unattended-upgrade", line 1998, in <module>
sys.exit(main(options))
File "/usr/bin/unattended-upgrade", line 1714, in main
if conffile_prompt(item.destfile):
File "/usr/bin/unattended-upgrade", line 929, in conffile_prompt
with open(prefix + conf_file, 'rb') as fp:
IsADirectoryError: [Errno 21] Is a directory: '/etc/qemu/fsfreeze-hook'
Basically, unattended-upgrade wants to compare old/new conffiles and
doesn't like it when the old conffile turns out to be a directory...
This prevents security updates to be installed. The unattended-upgrade
logs do not contain the trace, only the messages:
2019-04-05 13:24:24,851 INFO Initial blacklisted packages:
2019-04-05 13:24:24,853 INFO Initial whitelisted packages:
2019-04-05 13:24:24,853 INFO Starting unattended upgrades script
2019-04-05 13:24:24,854 INFO Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESM,a=bionic'
And that's it.
You can't really get out of this without manually running 'apt-get
install qemu-guest-agent' because at this point, unattended-upgrade
can't update itself anymore.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1823872/+subscriptions