rpm-software-management/dnf5

libfmt dependency may result in incorrect dep installation

Closed this issue · 2 comments

This morning in the ansible-core CI, we ran into the following issue:

$ /usr/bin/python3 -c 'import libdnf5'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib64/python3.12/site-packages/libdnf5/__init__.py", line 1, in <module>
    from . import advisory
  File "/usr/lib64/python3.12/site-packages/libdnf5/advisory.py", line 10, in <module>
    from . import _advisory
ImportError: libfmt.so.10: cannot open shared object file: No such file or directory

$ dnf5
dnf5: error while loading shared libraries: libfmt.so.10: cannot open shared object file: No such file or directory

For some reason, within our test container, we have a set of unknown packages installed that forces the dnf4 dep solver to install condor instead of fmt to provide libfmt.so.10:

$ dnf repoquery --deplist python3-libdnf5
...
dependency: libfmt.so.10()(64bit)
   provider: fmt-10.0.0-3.fc39.x86_64
   provider: condor-23.9.6-1.fc39.x86_64
...

Unfortunately the libfmt.so.10 from condor exists in a different path, and doesn't meet the requirements of libdnf5:

$ dnf whatprovides */libfmt.so.10
condor-23.9.6-1.fc39.x86_64 : HTCondor: High Throughput Computing
Repo        : updates
Matched from:
Filename    : /usr/lib64/condor/libfmt.so.10

fmt-10.0.0-3.fc39.x86_64 : Small, safe and fast formatting library for C++
Repo        : fedora
Matched from:
Filename    : /usr/lib64/libfmt.so.10

I'm not sure what set of packages causes the dnf4 dep solver to want to install condor over fmt, but it is something related to one or more packages installed as part of https://github.com/ansible/distro-test-containers/blob/4f7feaeeb123594b7e726239c0b496d3568a3f91/fedora39-test-container/Dockerfile

Adding -x condor to the install command results in the correct set of deps being installed, and dnf5 being functional.

Thank you for the additional research and insight!