After some further investigation, this problem is probably not Ubuntu-specific 
but originated in upstream Debian and was cherry-picked as part of these 
changes:
http://launchpadlibrarian.net/433311114/dpkg_1.19.0.5ubuntu2.1_1.19.0.5ubuntu2.2.diff.gz

These changes include attempts to avoid trigger loops. One of the
triggers is ldconfig (see /var/lib/dpkg/info/libc-bin.triggers). It
seems that the changes have caused certain triggers to be postponed too
much. If a package states it depends (directly or indirectly) on a
library, one expects that this library is not just unpacked, but also
available at the moment the package enters its setup phase.

We have also tried to move python-augeas to Pre-Depends: instead in the
hopes of causing the ldconfig to be triggered before the postinst is
invoked, but this makes no difference.

** Description changed:

  Seen on: Ubuntu 18.04.3 LTS
  dpkg version: 1.19.0.5ubuntu2.3 (also in 1.19.0.5ubuntu2.2)
  
  Regression compared to dpkg 1.19.0.5ubuntu2.1
- 
  
  To reproduce this:
  1. You need a package that depends on a library for running a script in its 
postinst hook. For instance, the attached minimal package has `Depends: 
python-augeas`, and tries to do “from augeas import Augeas” in a script invoked 
from the postinst hook. (It does nothing else.)
  2. Make sure the dependent library is not yet installed. In this example: 
libaugeas0, which is a dependency of python-augeas.
  3. apt-get install the package. For the attached exmple, you can use `dpkg 
-i`, followed by `apt-get -f install`.
  
  Result:
  
  Setting up the-package (1.2.3ubuntu1-2-1) ...
  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])
+   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
+  installed the-package package post-installation script subprocess returned 
error exit status 1
  
- 
- Simply running apt-get -f install afterwards will succeed and run the 
postinst script.
+ Simply running apt-get -f install afterwards will succeed and run the
+ postinst script.
  
  The cause of this problem seems to be that any invocations of `ldconfig` 
during the installation of the dependent libraries, do nothing at all.
  When adding `ldconfig -p >/tmp/ldconfig-output` to the postinst hook, one can 
see that neither libaugeas0 nor any other libraries that were just installed, 
are in the ldconfig cache at the moment the script is invoked.
- Even when adding an explicit `ldconfig` in the postinst script before running 
the python script, it still fails.
- Very curiously, calling `ldconfig -v >/dev/null` instead, somehow makes 
ldconfig work. This seems to indicate that there is some problem with I/O 
redirection, but for some reason the `-v` is also essential.
+ 
+ Even when trying to perform an ugly workaround by adding an explicit 
`ldconfig` invocation in the postinst script before running the python script, 
it still fails.
+ Very curiously, calling `ldconfig -v >/dev/null` instead, somehow makes 
ldconfig work. This is probably because ldconfig calls are actively blocked in 
maintainer scripts, but adding the argument and redirect circumvents this 
block...

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1851675

Title:
  dpkg fails to properly invoke ldconfig

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1851675/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to