Bug 2263771 - dnf5 requires full filepath metadata even for operations on "allowed" paths
Summary: dnf5 requires full filepath metadata even for operations on "allowed" paths
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf5
Version: rawhide
Hardware: Unspecified
OS: Linux
medium
medium
Target Milestone: ---
Assignee: rpm-software-management
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-02-11 18:42 UTC by Zbigniew Jędrzejewski-Szmek
Modified: 2024-02-12 09:35 UTC (History)
4 users (show)

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


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 2173051 0 unspecified NEW dnf5 gets confused by path dependency in secondary 2024-02-11 18:45:13 UTC

Description Zbigniew Jędrzejewski-Szmek 2024-02-11 18:42:11 UTC
We noticed this when building images in mkosi, where 'dnf5 install systemd' would fail, because systemd.rpm has Requires:/usr/bin/getfacl.

It's easy to show with any install command:
$ sudo dnf5 install /usr/sbin/zfs
Updating and loading repositories:
 Fedora - Rawhide - Developmental packages for the next Fedora release                100% |   3.0 MiB/s |  56.8 MiB |  00m19s
...

This is the full filepath metadata. But this path is "allowlisted" to be in primary metadata:
$ unzck -c /var/cache/dnf/rawhide-2d95c80a1fa0a67d/repodata/1f05eb1a7a3e817da09b554f3199980b5bbfb7cca4636e0e3490c628963d1885-primary.xml.zck|grep '<file>/usr/sbin/zfs<'
    <file>/usr/sbin/zfs</file>

Paths that are allow-listed must be special-cased. I suspect that this issue is caused by the recent changes to be more informative when (non-allowlisted) file dependencies are used. 


Reproducible: Always

Comment 1 Jan Kolarik 2024-02-12 09:35:15 UTC
I believe this is a problem of our simple mechanism that automatically requests filelists metadata for any filepath specs: "pattern[0] == '/' || (pattern[0] == '*' && pattern[1] == '/');". This should be addressed also for dnf4.


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