Bug 2180842 - Broken packages without filelists => DNF5 is unable to use them with default setting
Summary: Broken packages without filelists => DNF5 is unable to use them with default ...
Keywords:
Status: ASSIGNED
Alias: None
Product: Fedora
Classification: Fedora
Component: distribution
Version: 38
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Aoife Moloney
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1731689 1731694 1731695 1731696 1731700 1731702 2188431 2188550 2229623 2229910 2229932 2229934 2229948 2229951 2229953
Blocks: 2166026
TreeView+ depends on / blocked
 
Reported: 2023-03-22 11:32 UTC by Jaroslav Mracek
Modified: 2024-05-07 16:02 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Jaroslav Mracek 2023-03-22 11:32:37 UTC
Description of problem:
In Fedora there are several packages which requires files outside of /etc, /usr/(s)bin.
This issue will appear after DNF5 adoption, because DNF5 does not download filelists by default. Packages that requires files are not following Fedora packaging guidelines therefore we should not handle the issue as DNF5 problem. I think we need to do something with the issue to improve an efficiency of Fedora distribution.

Packages 94
alliance-libs requires: /sbin/ldconfig
amanda requires: /sbin/ldconfig
atlas requires: /sbin/ldconfig
atlas-corei2 requires: /sbin/ldconfig
belle-sip requires: /sbin/ldconfig
cjson requires: /sbin/ldconfig
dyninst requires: /sbin/ldconfig
fann requires: /sbin/ldconfig
garmintools requires: /sbin/ldconfig
ghc-base requires: /sbin/ldconfig
ghc9.0-base requires: /sbin/ldconfig
ghc9.2-base requires: /sbin/ldconfig
ghc9.4-base requires: /sbin/ldconfig
ghc9.6-base requires: /sbin/ldconfig
glusterfs requires: /sbin/ldconfig
glusterfs-resource-agents requires: /usr/lib/ocf/resource.d
glusterfs-server requires: /sbin/ldconfig
gnome-keyring requires: /usr/libexec/gcr-ssh-askpass
graphviz requires: /sbin/ldconfig
graphviz-gd requires: /sbin/ldconfig
graphviz-gtk2 requires: /sbin/ldconfig
grass-libs requires: /sbin/ldconfig
gsequencer requires: /sbin/ldconfig
hylafax+ requires: /sbin/ldconfig
hylafax+-client requires: /sbin/ldconfig
kata-containers requires: /usr/libexec/virtiofsd
kdelibs3 requires: /sbin/ldconfig
kdepimlibs requires: /sbin/ldconfig
kdepimlibs-akonadi requires: /sbin/ldconfig
krb5-server requires: /usr/share/dict/words
krb5-tests requires: /usr/share/dict/words
libcephfs2 requires: /sbin/ldconfig
libcephfs_jni1 requires: /sbin/ldconfig
libcephsqlite requires: /sbin/ldconfig
libebml-devel requires: /usr/lib/cmake
libebml-devel requires: /usr/lib64/cmake
libesedb requires: /sbin/ldconfig
libglusterfs0 requires: /sbin/ldconfig
libipmctl requires: /sbin/ldconfig
libiscsi requires: /sbin/ldconfig
libknet1 requires: /sbin/ldconfig
libmatroska-devel requires: /usr/lib/cmake
libmatroska-devel requires: /usr/lib64/cmake
libnozzle1 requires: /sbin/ldconfig
librados2 requires: /sbin/ldconfig
libradosstriper1 requires: /sbin/ldconfig
librbd1 requires: /sbin/ldconfig
librgw2 requires: /sbin/ldconfig
libvirt-cim requires: /sbin/ldconfig
libyaz requires: /sbin/ldconfig
lightsquid requires: /usr/share/lightsquid/common.pl
lightsquid-apache requires: /usr/share/lightsquid/common.pl
lxc-libs requires: /sbin/ldconfig
mod_nss requires: /usr/lib64/libnssckbi.so
mpibash-mpich-examples requires: /usr/lib64/mpich/bin/mpibash_mpich
mpibash-openmpi-examples requires: /usr/lib64/openmpi/bin/mpibash_openmpi
mptcpd requires: /sbin/ldconfig
mupen64plus requires: /sbin/ldconfig
nco requires: /sbin/ldconfig
netatalk requires: /sbin/ldconfig
netcdf-cxx requires: /sbin/ldconfig
openelp requires: /sbin/ldconfig
openni-primesense requires: /sbin/ldconfig
opentrep requires: /sbin/ldconfig
pluto requires: /sbin/ldconfig
portmidi requires: /sbin/ldconfig
qt3 requires: /sbin/ldconfig
recoll requires: /sbin/ldconfig
resource-agents requires: /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.statd
root-core requires: /sbin/ldconfig
rt requires: /usr/share/fonts/google-droid-sans-fonts/DroidSans.ttf /usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf
sblim-cmpi-base requires: /sbin/ldconfig
sblim-cmpi-fsvol requires: /sbin/ldconfig
sblim-cmpi-network requires: /sbin/ldconfig
sblim-cmpi-nfsv3 requires: /sbin/ldconfig
sblim-cmpi-nfsv4 requires: /sbin/ldconfig
sblim-cmpi-rpm requires: /sbin/ldconfig
sblim-cmpi-sysfs requires: /sbin/ldconfig
sblim-cmpi-syslog requires: /sbin/ldconfig
scalasca-mpich requires: /usr/lib64/mpich/bin/scorep-config
scalasca-openmpi requires: /usr/lib64/openmpi/bin/scorep-config
sng requires: /usr/share/X11/rgb.txt
sqliteodbc requires: /sbin/ldconfig
sqlninja requires: /usr/share/sqlninja/backscan.pl /usr/share/sqlninja/bruteforce.pl /usr/share/sqlninja/dirshell.pl /usr/share/sqlninja/dns.pl /usr/share/sqlninja/escalation.pl /usr/share/sqlninja/fingerprint.pl /usr/share/sqlninja/getdata.pl /usr/share/sqlninja/icmp.pl /usr/share/sqlninja/metasploit.pl /usr/share/sqlninja/resurrectxp.pl /usr/share/sqlninja/revshell.pl /usr/share/sqlninja/session.pl /usr/share/sqlninja/sqlcmd.pl /usr/share/sqlninja/test.pl /usr/share/sqlninja/upload.pl /usr/share/sqlninja/utils.pl
swift-lang requires: /sbin/ldconfig
tclx requires: /sbin/ldconfig
terminus-fonts-console requires: /usr/lib/kbd
tix requires: /sbin/ldconfig
tog-pegasus requires: /sbin/ldconfig
tog-pegasus-libs requires: /sbin/ldconfig
uim requires: /sbin/ldconfig
usbguard requires: /sbin/ldconfig
wine-core requires: /sbin/ldconfig
xrdp requires: /sbin/ldconfig


Unique requires 36
/sbin/ldconfig
/sbin/mount.nfs
/sbin/mount.nfs4
/sbin/rpc.statd
/usr/lib/cmake
/usr/lib/kbd
/usr/lib/ocf/resource.d
/usr/lib64/cmake
/usr/lib64/libnssckbi.so
/usr/lib64/mpich/bin/mpibash_mpich
/usr/lib64/mpich/bin/scorep-config
/usr/lib64/openmpi/bin/mpibash_openmpi
/usr/lib64/openmpi/bin/scorep-config
/usr/libexec/gcr-ssh-askpass
/usr/libexec/virtiofsd
/usr/share/X11/rgb.txt
/usr/share/dict/words
/usr/share/fonts/google-droid-sans-fonts/DroidSans.ttf
/usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf
/usr/share/lightsquid/common.pl
/usr/share/sqlninja/backscan.pl
/usr/share/sqlninja/bruteforce.pl
/usr/share/sqlninja/dirshell.pl
/usr/share/sqlninja/dns.pl
/usr/share/sqlninja/escalation.pl
/usr/share/sqlninja/fingerprint.pl
/usr/share/sqlninja/getdata.pl
/usr/share/sqlninja/icmp.pl
/usr/share/sqlninja/metasploit.pl
/usr/share/sqlninja/resurrectxp.pl
/usr/share/sqlninja/revshell.pl
/usr/share/sqlninja/session.pl
/usr/share/sqlninja/sqlcmd.pl
/usr/share/sqlninja/test.pl
/usr/share/sqlninja/upload.pl
/usr/share/sqlninja/utils.pl


Source packages 72
alliance
amanda
atlas
belle-sip
ceph
cjson
dyninst
fann
garmintools
ghc
ghc9.0
ghc9.2
ghc9.4
ghc9.6
glusterfs
gnome-keyring
graphviz
grass
gsequencer
hylafax+
ipmctl
kata-containers
kdelibs3
kdepimlibs
krb5
kronosnet
libebml
libesedb
libiscsi
libmatroska
libvirt-cim
lightsquid
lxc
mod_nss
mpibash
mptcpd
mupen64plus
nco
netatalk
netcdf-cxx
openelp
openni-primesense
opentrep
pluto
portmidi
qt3
recoll
resource-agents
root
rt
sblim-cmpi-base
sblim-cmpi-fsvol
sblim-cmpi-network
sblim-cmpi-nfsv3
sblim-cmpi-nfsv4
sblim-cmpi-rpm
sblim-cmpi-sysfs
sblim-cmpi-syslog
scalasca
sng
sqliteodbc
sqlninja
swift-lang
tclx
terminus-fonts
tix
tog-pegasus
uim
usbguard
wine
xrdp
yaz

Comment 1 Ben Cotton 2023-03-22 12:27:37 UTC
Thanks. I'll coordinate filing bugs against the offending components and set them to directly block the dnf 5 tracker (RHBZ 2166026). Once those bugs are filed, I'll close this bug and we can track status as part of 2166026.

Comment 2 Ben Cotton 2023-03-22 19:01:54 UTC
Before I go creating a bunch of bugs, I want to make sure I understand something. A lot of the files listed here are `/sbin/ldconfig`. I looked at the specfiles for atlas[1] and alliance[2] and neither of them have a Requires: for that file. However, they *do* invoke them in scriptlets. Is that how they ended up on the list?

In that case, should they set an explicit runtime dependency on the glibc package? Or should they just change the scriptlets to use `/usr/sbin/ldconfig` instead? My understanding is that the latter should work for that case.

[1] https://src.fedoraproject.org/rpms/atlas/blob/rawhide/f/atlas.spec
[2] https://src.fedoraproject.org/rpms/alliance/blob/rawhide/f/alliance.spec

Also, here's the description template I'm planning to use. Do you see anything that is incorrect or misleading?

BUG_BODY = """
The DNF team has identified {{ PACKAGE }} as requiring files outside of /etc, /usr/{s,}bin:
{{ REQUIRED_FILES }}

DNF5 will not download file lists by default, so packages that require files outside /etc, /usr/{s,}bin will fail to install under the default configuration beginning with F39.

NOTE: If the only files listed above are in `/sbin`, you can fix this by using `/usr/sbin` instead. Otherwise, you should update your package to require a package instead of a directory, or work with the required package maintainer to add an explicit `Provides:` for the file you require.

See the Fedora Packaging Guidelines[1] and the "Make DNF5 The Default" Change proposal[2] for more information.

[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_and_directory_dependencies
[2] https://fedoraproject.org/wiki/Changes/ReplaceDnfWithDnf5
"""

Comment 3 Jaroslav Mracek 2023-04-14 09:31:05 UTC
I think they should use `/usr/sbin/ldconfig`, and not `/sbin/ldconfig` variant is supposed to die in Fedora distribution. `/sbin` symlink is Fedora specific and DNF does not support it. The whole distribution is moving from that symlink to proper location. The problem is also in `glibc` package because they install binaries into /sbin and not into `/usr/sbin/`. Therefore I suggest that the change must start in `glibc`, but they need to have a compatible solution (provide binaries in both paths - `/sbin` and `/usr/sbin` ).

Comment 4 Jaroslav Mracek 2023-04-14 11:41:03 UTC
The movement /sbin to /usr/sbin was a feature of Fedora 17. See https://fedoraproject.org/wiki/Features/UsrMove.

Comment 5 Jaroslav Mracek 2023-05-03 09:57:53 UTC
I have good news. I am really grateful to maintainers of glibc, because their update significantly shortened the list of components with problematic requires.

21 packages with problematic dependencies:
glusterfs-resource-agents requires: /usr/lib/ocf/resource.d

gnome-keyring requires: /usr/libexec/gcr-ssh-askpass

kata-containers requires: /usr/libexec/virtiofsd

krb5-server requires: /usr/share/dict/words

krb5-tests requires: /usr/share/dict/words

libebml-devel requires: /usr/lib/cmake

libebml-devel requires: /usr/lib64/cmake

libmatroska-devel requires: /usr/lib/cmake

libmatroska-devel requires: /usr/lib64/cmake

lightsquid requires: /usr/share/lightsquid/common.pl

lightsquid-apache requires: /usr/share/lightsquid/common.pl

mod_nss requires: /usr/lib64/libnssckbi.so

mpibash-mpich-examples requires: /usr/lib64/mpich/bin/mpibash_mpich

mpibash-openmpi-examples requires: /usr/lib64/openmpi/bin/mpibash_openmpi

resource-agents requires: /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.statd

rt requires: /usr/share/fonts/google-droid-sans-fonts/DroidSans.ttf /usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf

scalasca-mpich requires: /usr/lib64/mpich/bin/scorep-config

scalasca-openmpi requires: /usr/lib64/openmpi/bin/scorep-config

sng requires: /usr/share/X11/rgb.txt

sqlninja requires: /usr/share/sqlninja/backscan.pl /usr/share/sqlninja/bruteforce.pl /usr/share/sqlninja/dirshell.pl /usr/share/sqlninja/dns.pl /usr/share/sqlninja/escalation.pl /usr/share/sqlninja/fingerprint.pl /usr/share/sqlninja/getdata.pl /usr/share/sqlninja/icmp.pl /usr/share/sqlninja/metasploit.pl /usr/share/sqlninja/resurrectxp.pl /usr/share/sqlninja/revshell.pl /usr/share/sqlninja/session.pl /usr/share/sqlninja/sqlcmd.pl /usr/share/sqlninja/test.pl /usr/share/sqlninja/upload.pl /usr/share/sqlninja/utils.pl

terminus-fonts-console requires: /usr/lib/kbd


From 15 source packages
glusterfs
gnome-keyring
kata-containers
krb5
libebml
libmatroska
lightsquid
mod_nss
mpibash
resource-agents
rt
scalasca
sng
sqlninja
terminus-fonts

Comment 6 Zbigniew Jędrzejewski-Szmek 2023-05-04 11:26:54 UTC
I already filed some bugs previously, and Igor Raits even more previously:

sng was fixed in https://bugzilla.redhat.com/show_bug.cgi?id=1731702.
I'll do a build for F38 too.

sqlninja - https://bugzilla.redhat.com/show_bug.cgi?id=1731703
rt - https://bugzilla.redhat.com/show_bug.cgi?id=1731700 - PR SUBMITTED
lightsquid - https://bugzilla.redhat.com/show_bug.cgi?id=1731696
kata-containers - https://src.fedoraproject.org/rpms/kata-containers/pull-request/4 - PR MERGED
glusterfs - https://bugzilla.redhat.com/show_bug.cgi?id=1731689
libebml - https://bugzilla.redhat.com/show_bug.cgi?id=1731694
libmatroska - https://bugzilla.redhat.com/show_bug.cgi?id=1731695

Comment 7 Kaleb KEITHLEY 2023-05-04 13:14:46 UTC
Maybe someone can fix the ldconfig examples in https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/ and eliminate some confusion

Comment 8 Jaroslav Mracek 2023-08-08 09:34:39 UTC
Good news, only 8 src packages are effected in f39

Source packages
glusterfs - Bug 2229910 - Problem with requirement `/usr/lib/ocf/resource.d`
kata-containers - Bug 2229932 - Problem with requirement of `/usr/libexec/virtiofsd`
mod_nss - Bug 2229934 - Problem with requirement of `/usr/lib64/libnssckbi.so`
mpibash - Bug 2229948 - Problem with file requirements
resource-agents - Bug 2229951 - Problem with file requirements
rt - Bug 1731700 - rt depends on files/directories from non-standard locations
scalasca - Bug 2229953 - Problem with file requirements
sqlninja - Bug 1731703 - sqlninja depends on files/directories from non-standard locations

Comment 9 Jaroslav Mracek 2023-11-22 09:49:43 UTC
Update for Fedora 40. Only 7 packages from 5 sources would have broken dependencies without file lists:


mpibash-mpich-examples requires: /usr/lib64/mpich/bin/mpibash_mpich
mpibash-openmpi-examples requires: /usr/lib64/openmpi/bin/mpibash_openmpi

resource-agents requires: /sbin/mount.nfs /sbin/mount.nfs4 /sbin/rpc.statd

rt requires: /usr/share/fonts/google-droid-sans-fonts/DroidSans.ttf /usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf

scalasca-mpich requires: /usr/lib64/mpich/bin/scorep-config
scalasca-openmpi requires: /usr/lib64/openmpi/bin/scorep-config

sqlninja requires: /usr/share/sqlninja/backscan.pl /usr/share/sqlninja/bruteforce.pl /usr/share/sqlninja/dirshell.pl /usr/share/sqlninja/dns.pl /usr/share/sqlninja/escalation.pl /usr/share/sqlninja/fingerprint.pl /usr/share/sqlninja/getdata.pl /usr/share/sqlninja/icmp.pl /usr/share/sqlninja/metasploit.pl /usr/share/sqlninja/resurrectxp.pl /usr/share/sqlninja/revshell.pl /usr/share/sqlninja/session.pl /usr/share/sqlninja/sqlcmd.pl /usr/share/sqlninja/test.pl /usr/share/sqlninja/upload.pl /usr/share/sqlninja/utils.pl

Comment 10 Jan Kolarik 2023-11-23 10:38:51 UTC
I have investigated the packages and bugs mentioned in the previous comments. For Fedora 40, the status is as follows:

- rt: A PR already exists to fix the issue: https://src.fedoraproject.org/rpms/rt/pull-request/1
- resource-agents: A PR already exists to fix the issue: https://src.fedoraproject.org/rpms/resource-agents/pull-request/7
- sqlninja: The issue has already been fixed, as looking in the linked https://bugzilla.redhat.com/show_bug.cgi?id=1731703
- mpibash: Upon reviewing the current Rawhide spec file, there doesn't appear to be any file dependency-related issue, likely a false positive: https://src.fedoraproject.org/rpms/mpibash/blob/rawhide/f/mpibash.spec
- scalasca: I've created a PR to fix the issue: https://src.fedoraproject.org/rpms/scalasca/pull-request/1

Therefore, I hope we're ready to drop the filelists for Fedora 40 :)

Comment 11 Pavel Raiskup 2024-01-05 15:36:35 UTC
Good to hear this is resolved.  Just note that there's a plan to implement
https://fedoraproject.org/wiki/Changes/BuildWithDNF5 very soon, before
the F40 mass rebuild starts.

Comment 12 Yaakov Selkowitz 2024-01-18 05:49:12 UTC
BuildRequires also need to be considered, not just Requires; e.g gcc is currently FTBFS with dnf5.

$ grep -E '^BuildRequires.+(/usr/([^bs].*|share)|[^fn]dir\})' *
gcc.spec:BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
gnu-efi.spec:BuildRequires: /usr/include/gnu/stubs-32.h
ispc.spec:BuildRequires:	/usr/lib/crt1.o
mapserver.spec:BuildRequires:  /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf
mapserver.spec:BuildRequires:  /usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf
mold.spec:BuildRequires:	/usr/lib/libc.so
perl-Convert-Color.spec:BuildRequires:  /usr/share/X11/rgb.txt
perl-Font-AFM.spec:BuildRequires:  %{_fontbasedir}/urw-base35/NimbusSans-Bold.afm
rt.spec:BuildRequires:  /usr/share/fonts/google-droid-sans-fonts/DroidSansFallbackFull.ttf
rt.spec:BuildRequires:  /usr/share/fonts/google-droid-sans-fonts/DroidSans.ttf
sqlite2.spec:BuildRequires:  ncurses-devel, readline-devel, %{_includedir}/tcl.h
syslinux.spec:BuildRequires: /usr/include/gnu/stubs-32.h
systemtap.spec:BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf
xen.spec:BuildRequires: /usr/include/gnu/stubs-32.h

Comment 13 Aoife Moloney 2024-05-07 16:02:03 UTC
This message is a reminder that Fedora Linux 38 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora Linux 38 on 2024-05-21.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
'version' of '38'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, change the 'version' 
to a later Fedora Linux version. Note that the version field may be hidden.
Click the "Show advanced fields" button if you do not see it.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora Linux 38 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora Linux, you are encouraged to change the 'version' to a later version
prior to this bug being closed.


Note You need to log in before you can comment on or make changes to this bug.