Fedora-release-identity trickery

Upon a fresh kickstart of F38 from the server netinst the system suspends after 15 minutes of inactivity. Reading: F38 suspend suggests this is not an expected result.

Investigating the mechanism used to put this override in server edition leads to fedora-release-identity-basic having been installed but the override is part of fedora-release-identity-server. Adding the package fedora-release-server to the kickstart (even going back to the everything netinst) sould produce the desired result.

Swapping the two with:

dnf swap fedora-release-identity-basic fedora-release-identity-server

had an unexpected side effect. The dependencies for podman changed. The podman package was installed before the swap. The install_weak_deps was set to false both during kickstart and afterwards. As part of the swap dnf showed:

aardvark-dns
fuse-overlayfs
libslirp
passt
passt-selinux
qemu-user-static-aarch64
qemu-user-static-arm
qemu-user-static-x86
slirp4netns 

(as well as fedora-release-server) as dependencies for the swap.

dnf -C repoquery --source fedora-release-identity-server
dnf --enablerepo=updates-source download --source fedora-release

Examining the spec file obviates the mechanism for the overrides in fedora-server.

Two questions:
Where is the fedora-release package development hosted? Github? Pagure? Is there a straightforward way to discover it?

What is the mechanism used to cause the podman dependencies to be different between fedora-release-identity-basic and fedora-release-identity-server?

Normally, dnf info packagename should tell you the URL, but for this one, it is set to https://fedoraproject.org/, which isn’t particularly helpful. That also transfers to the Fedora Packages web search tool not being of use either.

Anyway, it turns out this package is somewhat strange — it is entirely self-contained. There are no external sources. Everything is on src.fedoraproject.org — specifically, Tree - rpms/fedora-release - src.fedoraproject.org.

The second part of the question I’ll leave for someone else.

I am still unclear on how it is that packages can have different dependencies (at least it looks that way to me) when using different fedora-release-identity. In this case podman showed up as having additional dependencies when switching from the basic to server identities.

A big thans to mattdm for pointing me to the fedora-release SCM.

I have solved your mystery. :classic_smiley:

I picked one of your dependencies, and ran

$ dnf repoquery --whatrequires passt

which gave me:

Last metadata expiration check: 2:01:26 ago on Thu 05 Oct 2023 12:16:00 PM EDT.
containers-common-extra-4:1-95.fc39.noarch
passt-selinux-0:0^20230908.g05627dc-1.fc39.noarch

and then in the containers-common specfile:

%package extra
Summary: Extra dependencies for Podman and Buildah
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: container-network-stack
Requires: oci-runtime
Recommends: crun
Requires: (crun if fedora-release-identity-server)
Recommends: netavark >= 1.6.0-1
Requires: (netavark >= 1.6.0-1 if fedora-release-identity-server)
Recommends: slirp4netns
Requires: (slirp4netns if fedora-release-identity-server)
Recommends: passt
Requires: (passt if fedora-release-identity-server)
Requires: iptables
Requires: nftables
Suggests: containernetworking-plugins >= 0.9.1-1
Recommends: qemu-user-static
Requires: (qemu-user-static-aarch64 if fedora-release-identity-server)
Requires: (qemu-user-static-arm if fedora-release-identity-server)
Requires: (qemu-user-static-x86 if fedora-release-identity-server)

This is using rich dependencies (which, as you can see, is a different thing from weak dependencies).

Now, as to why, I’ll still leave that to someone else. But that’s the how.

wow

Yes this is exactly the answer I was not able to discover myself. Who would have thought. Now I have to reevaluate all my life’s choices when it comes to dependency checking.

Have a system with sssd-krb5, … only if krb5-libs is installed
sssd-ad, … only if samba-common-libs is installed

I’d love to have a system without kerberos or samba without building LFS.

1 Like

But wait, there’s more. :wink:

Recently introduced and developed by @gotmax23, you can also use fedrq for checking dependencies. I prefer it over the lengthy queries using dnf.

$ fedrq wr passt
containers-common-extra-4:1-96.fc40.noarch
libvirt-9.7.0-1.fc40.src
passt-selinux-0^20230908.g05627dc-1.fc40.noarch
1 Like

That fedrq looks interesting. Examining spec files may also be enhanced as fedrq can download src.rpms and extract spec files from them.

I would prefer to browse the package’s spec file (and sources) online though. Installing fedrq on my system requires another 8 packages and 6.8M of storage so I will have to weigh that cost whereas I cannot do without dnf. Having choices is a plus though. Decisions, decisions…