Spacewalk use file based requires on several place. And since /sbin path was not provided by any macro, it is hardcoded in spec files. But in Fedora 17 was moved /sbin to /usr/sbin. Two releases were left for transition and in Fedora 17 and 18 was this path provided by rpm. But in Fedora 17 is this path not provided. Therefore all requires in form: Requires: /sbin/foo need to be rewriten to: %if 0%{?fedora} > 17 Requires: %{_sbindir}/foo %else Requires: /sbin/foo %endif I made this change for package which are in Fedora and which I maintain. But my grep shows other occurences: See: $ git grep Requires |grep sbin in root of Spacewalk.git $ git grep Requires |grep sbin |wc -l 40
Couldn't we just ship the /sbin -> /usr/sbin symlink in Spacewalk?
No. Because this will not change "Provides" of affected packages. I.e. if coreutils.fc19 provides: /usr/sbin/runuser And Spacewalk require: Requires: /sbin/runuser and if you will provides /sbin -> /usr/sbin in one of spacewalk packages, it will have no effect on provides of package coreutils. And yum will not be able to resolve Requires: /sbin/runuser even if you will be able run /sbin/runuser with coreutils installed and symlink on place.
Wouldn't %{!?_sbindir: %define _sbindir /sbin} Requires: %{_sbindir}/foo be cleared than having that %if 0%{?fedora} > 17 branching there?
No. Because _sbindir exist in all distribution (at least F16+, RHEL6+) and always pointed to /usr/sbin Do not confuse /usr/sbin for which always existed %{_sbindir} and /sbin which is used for some binaries in RHEL6 and F16.
Fixed in Spacewalk master by commit 20460363e95e901897c313088d40020bbde2e5a2 919468 - fixed path in file based Requires
Fix for this bug is present in Spacewalk 2.0, closing this bug as CURRENTRELEASE.