Package: dpkg Version: 1.19.7 Severity: important Dear Maintainer,
This was first discovered in Ubuntu 18.04 and has already been filed as Ubuntu bug #1851675, but was later on found to have originated in changes to dpkg in Debian itself. https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1851675 In a nutshell, if a package has a Depends: that will cause a library to be installed, and the package relies on that library in a postinst hook, then this hook will fail if the library was not already installed before performing an apt-get install of the package itself. As an example, I have a package that has a "Depends: python-augeas". A stripped-down example of this package can be downloaded from the Ubuntu bug report. In its postinst script, a Python script is invoked that tries to do: from augeas import Augeas This should work because all the requirements to make this import work, should be made available by installing the python-augeas dependency. The actual result however, is: Unpacking the-package (1.2.3) ... Setting up the-package (1.2.3) ... Traceback (most recent call last): File "/usr/lib/the-package/setup-package.py", line 3, in <module> from augeas import Augeas File "/usr/lib/python2.7/dist-packages/augeas.py", line 78, in <module> class Augeas(object): File "/usr/lib/python2.7/dist-packages/augeas.py", line 82, in Augeas _libaugeas = _dlopen("augeas") File "/usr/lib/python2.7/dist-packages/augeas.py", line 75, in _dlopen raise ImportError("Unable to import lib%s!" % args[0]) ImportError: Unable to import libaugeas! dpkg: error processing package the-package (--configure): installed the-package package post-installation script subprocess returned error exit status 1 The reason why this fails is because python-augeas depends on libaugeas0, but this library has not yet been completely configured. This can be seen by adding `ldconfig -p >/tmp/ldconfig-output` to the postinst script. Simply running apt-get -f install afterwards, will work, because then libaugeas0 is fully configured. Moving python-augeas or even libaugeas0 to Pre-Depends, does not help as a workaround (and according to my interpretation of debian-policy, should not be needed). This worked as expected until recently. The regression must have been introduced by one of the changes listed here, most likely one of the changes related to trigger loops: http://launchpadlibrarian.net/433311114/dpkg_1.19.0.5ubuntu2.1_1.19.0.5ubuntu2.2.diff.gz ldconfig is one of the triggers of libc-bin. It seems that its invocation is now postponed too late. If a package 'Depends' directly or indirectly on libraries that were installed during the same run, then ldconfig must be invoked before setting up the package to ensure it can use the libraries in its postinst hook. -- Package-specific info: -- System Information: Debian Release: 10.1 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 5.3.0-19-generic (SMP w/8 CPU cores) Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages dpkg depends on: ii libbz2-1.0 1.0.6-9.2~deb10u1 ii libc6 2.28-10 ii liblzma5 5.2.4-1 ii libselinux1 2.8-1+b1 ii tar 1.30+dfsg-6 ii zlib1g 1:1.2.11.dfsg-1 dpkg recommends no packages. Versions of packages dpkg suggests: ii apt 1.8.2 pn debsig-verify <none> -- no debconf information