Missing Metadata

When running “yum update” on my Oracle Linux 6 and 7 clients, they are unable to determine files contained in a given package. For example, bash is set to be updated, but dozens of packages depend on the file /bin/bash or /bin/sh, and yum in unable to to find the file. It’s not just bash; glibc-common and others are also problematic.

Error: Package: cpp-4.4.7-23.0.1.el6.x86_64 (@curia_oracle_linux_6)
           Requires: /bin/sh
           Removing: bash-4.1.2-48.el6.x86_64 (@AMRI_ol_6)
               Not found
           Updated By: bash-4.1.2-48.0.1.el6.x86_64 (curia_oracle_linux_6_els)
               Not found

Error: Package: systemd-219-78.0.7.el7_9.5.x86_64 (curia_oracle_linux_7)
           Requires: /usr/bin/getent
           Removing: glibc-common-2.17-324.0.1.el7_9.x86_64 (@curia_oracle_linux_7)
               Not found
           Updated By: glibc-common-2.17-325.0.1.el7_9.x86_64 (curia_oracle_linux_7)
               Not found
           Available: glibc-common-2.17-323.0.1.el7_9.x86_64 (curia_oracle_linux_7)
               Not found

I’ve tried resyncing the repos with and without “mirror on sync”, and then republishing the metadata on both the content views and the composite content views, all with the same result. Aside from deleting and recreating the repositories, is there a way to completely rebuild them?

Digging a little deeper, the filelists.xml.gz served by Foreman do not contain file lists for the offending packages. I’ve verified that the source repos do.

<package pkgid="27253555eeafa462092a99f43d84cbf809a43f25" name="glibc-common" arch="x86_64">
  <version epoch="0" ver="2.17" rel="325.0.1.el7_9"/>
</package>

Hi,

when I see such errors, then most of the time I have forgotten to promote the CV. Also, “yum clean all” is necessary on the client almost always. Another problem may be additional files in /etc/yum.repos.d. I always have to delete them.

Best,
Hans-Joachim

Hi,

The CV is promoted to my “Test” environment, and I’ve run “yum clean all” on a test host. Since then, I’ve definitely narrowed it down to a server-side issue. The CV has two versions of bash – 4.1.2-48.el6.x86_64 and 4.1.2-48.0.1.el6.x86_64.

The older version has files in the package
image

The newer version has no files.
image

I tried removing the newer version of bash from the repo, resyncing the repo with the “–ignore-metadata” flag, then creating a new CV, and then republishing that CV, with the same result.

I’ve confirmed that files are listed in the filelists.xml served by the source:

<package pkgid="74d6ca9b41a5deb4c3b5e2ac26a3740b0a52693f" name="bash" arch="x86_64">
  <version epoch="0" ver="4.1.2" rel="48.0.1.el6"/>
  <file>/bin/bash</file>
  <file>/bin/sh</file>
  <file>/etc/skel/.bash_logout</file>
  .....
  <file>/usr/share/man/man1/unalias.1.gz</file>
  <file>/usr/share/man/man1/unset.1.gz</file>
  <file>/usr/share/man/man1/wait.1.gz</file>
</package>

I’ve been googling, and I cam across this.
https://pulp.plan.io/issues/9107
Running the repair script found several thousand packages with no files. The directions then say to run:

pulp rpm publication destroy --href $(url fragment)

Since the pulp2->3 migration, the command “pulp” no longer exists. Is there an equivalent command that can be run on an up-to-date installation?