RFC: Junk in Fedora Extras

Michael Schwendt bugs.michael at gmx.net
Sat Oct 21 21:32:19 UTC 2006


So far, we have been running "repomanage" on the Fedora Extras repository
trees to get rid of old package releases automatically. In development, we
keep only the latest release, for older trees we keep at most two
releases.

However, occasionally I've run into obsolete/orphaned sub-packages where
the packager changed the BuildArch or deleted a sub-package without asking
the repository staff to delete old package releases manually. It can also
happen that the package removal requests, which are processed by humans,
lead to incomplete removal of packages, when e.g. "debuginfo" packages are
not removed or version-information was misleading.

The resulting obsolete package releases live in the repository forever, as
repomanage will never decide to delete them.

As a solution, I've looked into porting my old Perl rpm-expire script to
Python -- I've lost the script in the single place where it was running
and have only recovered an early prototype I'm not satisfactory with.

The technique is based on this:

 * We build from src.rpm packages.

 * For all binary rpms there must be a corresponding src.rpm.

 * The src.rpm name is in the %{sourcerpm} header of a binary rpm.

 * If the src.rpm for a binary rpm in the repository does not exist,
   where does the binary rpm come from? --> We delete it!

 * Instead of expiring arbitrary packages based on "number of pkgs found",
   we expire only src.rpms and clean up the binary rpms based on whether
   their src.rpms still exist.

Running a quick hack of this on the current FE repositories, it creates a
long list of "lost souls" as appended below. I've checked a few already
and so far could not find any false positives. Of course, letting such a
script remove these packages automatically actually, will require a few
good sanity checks, so run-time errors don't empty the entire
repository. ;)

[...]

This is the full list of binary rpms, which do not have a corresponding
src.rpm in the repository:

Expiring (keep = 1): /extras/development/SRPMS
  Skipping em8300-kmod
  Skipping sysprof-kmod
Pruning: /extras/development/ppc
  Macaulay2-0.9.8-0.3.cvs20060327.fc6.ppc.rpm
  clearlooks-0.5-1.ppc.rpm
  dhcp-forwarder-0.7-7.fc5.ppc.rpm
  dhcp-forwarder-sysv-0.7-7.fc5.ppc.rpm
  dietlibc-0.29-4.fc5.ppc.rpm
  gnome-applet-netmon-0.4-3.ppc.rpm
  gnome-theme-clearlooks-0.5-3.ppc.rpm
  gprolog-1.2.19-5.fc6.ppc.rpm
  gprolog-docs-1.2.19-5.fc6.ppc.rpm
  gprolog-examples-1.2.19-5.fc6.ppc.rpm
  pessulus-2.16.0-4.fc6.ppc.rpm
  ip-sentinel-0.12-5.fc5.ppc.rpm
  ip-sentinel-sysv-0.12-5.fc5.ppc.rpm
  libc-client2004g-2004g-6.fc6.ppc.rpm
  cobbler-0.1.1-8.fc6.noarch.rpm
  python-simpletal-3.12-1.ppc.rpm
  perl-Alien-wxWidgets-0.21-1.fc6.noarch.rpm
  util-vserver-build-0.30.208-1.fc5.ppc.rpm
  util-vserver-0.30.208-1.fc5.ppc.rpm
  util-vserver-devel-0.30.208-1.fc5.ppc.rpm
  util-vserver-core-0.30.208-1.fc5.ppc.rpm
  util-vserver-legacy-0.30.208-1.fc5.ppc.rpm
  util-vserver-lib-0.30.208-1.fc5.ppc.rpm
  util-vserver-sysv-0.30.208-1.fc5.ppc.rpm
  Macaulay2-debuginfo-0.9.8-0.3.cvs20060327.fc6.ppc.rpm
  clearlooks-debuginfo-0.5-1.ppc.rpm
  dhcp-forwarder-debuginfo-0.7-7.fc5.ppc.rpm
  dietlibc-debuginfo-0.29-4.fc5.ppc.rpm
  gnome-applet-netmon-debuginfo-0.4-3.ppc.rpm
  gnome-theme-clearlooks-debuginfo-0.5-3.ppc.rpm
  gprolog-debuginfo-1.2.19-5.fc6.ppc.rpm
  db4o-debuginfo-5.5-8.fc6.ppc.rpm
  ip-sentinel-debuginfo-0.12-5.fc5.ppc.rpm
  python-psyco-debuginfo-1.4-1.ppc.rpm
  python-simpletal-debuginfo-3.12-1.ppc.rpm
  util-vserver-debuginfo-0.30.208-1.fc5.ppc.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-3.fc6.ppc.rpm
Pruning: /extras/development/x86_64
  pessulus-2.16.0-4.fc6.x86_64.rpm
  libc-client2004g-2004g-6.fc6.x86_64.rpm
  perl-Unicode-Map8-0.12-7.fc5.x86_64.rpm
  perl-Unicode-MapUTF8-1.09-6.fc5.noarch.rpm
  perl-Alien-wxWidgets-0.21-1.fc6.noarch.rpm
  db4o-debuginfo-5.5-8.fc6.x86_64.rpm
  perl-Unicode-Map8-debuginfo-0.12-7.fc5.x86_64.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-3.fc6.x86_64.rpm
Pruning: /extras/development/i386
  pessulus-2.16.0-4.fc6.i386.rpm
  libc-client2004g-2004g-6.fc6.i386.rpm
  perl-Alien-wxWidgets-0.21-1.fc6.noarch.rpm
  db4o-debuginfo-5.5-8.fc6.i386.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-3.fc6.i386.rpm

Expiring (keep = 2): /extras/5/SRPMS
  Skipping em8300-kmod
  Skipping sysprof-kmod
Pruning: /extras/5/ppc
  apmud-1.0.0-1.ppc.rpm
  perl-Alien-wxWidgets-0.21-1.fc5.noarch.rpm
  lat-1.0.6-1.fc5.noarch.rpm
  nabi-0.14-4.ppc.rpm
  python-reportlab-1.20-1.fc4.ppc.rpm
  qof-docs-0.6.4-3.fc5.ppc.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.ppc.rpm
  clearlooks-0.5-1.ppc.rpm
  dhcp-forwarder-0.7-7.fc5.ppc.rpm
  dhcp-forwarder-sysv-0.7-7.fc5.ppc.rpm
  dietlibc-0.29-4.fc5.ppc.rpm
  gnome-applet-netmon-0.4-3.ppc.rpm
  gnome-theme-clearlooks-0.5-3.ppc.rpm
  ip-sentinel-0.12-5.fc5.ppc.rpm
  ip-sentinel-sysv-0.12-5.fc5.ppc.rpm
  libc-client2004g-2004g-4.fc5.2.ppc.rpm
  python-simpletal-3.12-1.ppc.rpm
  util-vserver-0.30.208-1.fc5.ppc.rpm
  util-vserver-build-0.30.208-1.fc5.ppc.rpm
  util-vserver-core-0.30.208-1.fc5.ppc.rpm
  util-vserver-devel-0.30.208-1.fc5.ppc.rpm
  util-vserver-legacy-0.30.208-1.fc5.ppc.rpm
  util-vserver-lib-0.30.208-1.fc5.ppc.rpm
  util-vserver-sysv-0.30.208-1.fc5.ppc.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.1.ppc.rpm
  php-eaccelerator-5.1.4_0.9.5-1.fc5.ppc.rpm
  R-mAr-debuginfo-1.1-3.fc5.ppc.rpm
  abicheck-debuginfo-1.2-5.ppc.rpm
  apmud-debuginfo-1.0.0-1.ppc.rpm
  ikvm-debuginfo-0.22-5.fc5.ppc.rpm
  ikvm-debuginfo-0.22-7.fc5.ppc.rpm
  nabi-debuginfo-0.14-4.ppc.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-2.fc5.ppc.rpm
  python-reportlab-debuginfo-1.20-1.fc4.ppc.rpm
  clearlooks-debuginfo-0.5-1.ppc.rpm
  dhcp-forwarder-debuginfo-0.7-7.fc5.ppc.rpm
  dietlibc-debuginfo-0.29-4.fc5.ppc.rpm
  gnome-applet-netmon-debuginfo-0.4-3.ppc.rpm
  gnome-theme-clearlooks-debuginfo-0.5-3.ppc.rpm
  ip-sentinel-debuginfo-0.12-5.fc5.ppc.rpm
  python-psyco-debuginfo-1.4-1.ppc.rpm
  python-simpletal-debuginfo-3.12-1.ppc.rpm
  util-vserver-debuginfo-0.30.208-1.fc5.ppc.rpm
  php-eaccelerator-debuginfo-5.1.4_0.9.5-1.fc5.ppc.rpm
Pruning: /extras/5/x86_64
  perl-Alien-wxWidgets-0.21-1.fc5.noarch.rpm
  kphone-4.2-6.fc5.x86_64.rpm
  lvcool-1.0.0-1.x86_64.rpm
  qof-docs-0.6.4-3.fc5.x86_64.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.x86_64.rpm
  tpb-0.6.3-2.x86_64.rpm
  lat-1.0.6-1.fc5.noarch.rpm
  amaya-8.5-2.x86_64.rpm
  libc-client2004g-2004g-4.fc5.2.x86_64.rpm
  perl-Unicode-Map8-0.12-7.fc5.x86_64.rpm
  soundtracker-0.6.7-3.x86_64.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.1.x86_64.rpm
  php-eaccelerator-5.1.4_0.9.5-1.fc5.x86_64.rpm
  R-mAr-debuginfo-1.1-3.fc5.x86_64.rpm
  abicheck-debuginfo-1.2-5.x86_64.rpm
  ikvm-debuginfo-0.22-5.fc5.x86_64.rpm
  ikvm-debuginfo-0.22-7.fc5.x86_64.rpm
  kphone-debuginfo-4.2-6.fc5.x86_64.rpm
  lvcool-debuginfo-1.0.0-1.x86_64.rpm
  maxima-debuginfo-5.9.1-4.fc5.x86_64.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-2.fc5.x86_64.rpm
  tpb-debuginfo-0.6.3-2.x86_64.rpm
  amaya-debuginfo-8.5-2.x86_64.rpm
  perl-Unicode-Map8-debuginfo-0.12-7.fc5.x86_64.rpm
  soundtracker-debuginfo-0.6.7-3.x86_64.rpm
  php-eaccelerator-debuginfo-5.1.4_0.9.5-1.fc5.x86_64.rpm
Pruning: /extras/5/i386
  perl-Alien-wxWidgets-0.21-1.fc5.noarch.rpm
  lat-1.0.6-1.fc5.noarch.rpm
  qof-docs-0.6.4-3.fc5.i386.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.i386.rpm
  libc-client2004g-2004g-4.fc5.2.i386.rpm
  scim-bridge-gtkimm-0.1.12-1.fc5.1.i386.rpm
  php-eaccelerator-5.1.4_0.9.5-1.fc5.i386.rpm
  R-mAr-debuginfo-1.1-3.fc5.i386.rpm
  abicheck-debuginfo-1.2-5.i386.rpm
  ikvm-debuginfo-0.22-5.fc5.i386.rpm
  ikvm-debuginfo-0.22-7.fc5.i386.rpm
  maxima-debuginfo-5.9.1-4.fc5.i386.rpm
  perl-Alien-wxWidgets-debuginfo-0.21-2.fc5.i386.rpm
  php-eaccelerator-debuginfo-5.1.4_0.9.5-1.fc5.i386.rpm

Expiring (keep = 2): /extras/4/SRPMS
Pruning: /extras/4/ppc
  check-0.9.3-1.fc4.ppc.rpm
  php-mmcache-5.0.4_2.4.6-8.fc4.ppc.rpm
  php-eaccelerator-5.0.4_0.9.4-2.fc4.ppc.rpm
  nabi-0.14-4.ppc.rpm
  php-eaccelerator-5.0.4_0.9.4-1.fc4.ppc.rpm
  php-mmcache-5.0.4_2.4.6-7.fc4.ppc.rpm
  python-simpletal-3.12-1.ppc.rpm
  R-mAr-debuginfo-1.1-3.fc4.ppc.rpm
  abicheck-debuginfo-1.2-5.ppc.rpm
  nabi-debuginfo-0.14-4.ppc.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-1.fc4.ppc.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-7.fc4.ppc.rpm
  python-psyco-debuginfo-1.4-1.ppc.rpm
  python-simpletal-debuginfo-3.12-1.ppc.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-8.fc4.ppc.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-2.fc4.ppc.rpm
Pruning: /extras/4/x86_64
  amaya-8.5-2.x86_64.rpm
  check-0.9.3-1.fc4.x86_64.rpm
  php-eaccelerator-5.0.4_0.9.4-1.fc4.x86_64.rpm
  php-mmcache-5.0.4_2.4.6-7.fc4.x86_64.rpm
  soundtracker-0.6.7-3.x86_64.rpm
  php-mmcache-5.0.4_2.4.6-8.fc4.x86_64.rpm
  php-eaccelerator-5.0.4_0.9.4-2.fc4.x86_64.rpm
  tpb-0.6.3-2.x86_64.rpm
  R-mAr-debuginfo-1.1-3.fc4.x86_64.rpm
  abicheck-debuginfo-1.2-5.x86_64.rpm
  amaya-debuginfo-8.5-2.x86_64.rpm
  maxima-debuginfo-5.9.1-4.fc4.x86_64.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-1.fc4.x86_64.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-7.fc4.x86_64.rpm
  soundtracker-debuginfo-0.6.7-3.x86_64.rpm
  tpb-debuginfo-0.6.3-2.x86_64.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-8.fc4.x86_64.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-2.fc4.x86_64.rpm
Pruning: /extras/4/i386
  check-0.9.3-1.fc4.i386.rpm
  php-eaccelerator-5.0.4_0.9.4-1.fc4.i386.rpm
  php-mmcache-5.0.4_2.4.6-7.fc4.i386.rpm
  php-mmcache-5.0.4_2.4.6-8.fc4.i386.rpm
  php-eaccelerator-5.0.4_0.9.4-2.fc4.i386.rpm
  R-mAr-debuginfo-1.1-3.fc4.i386.rpm
  abicheck-debuginfo-1.2-5.i386.rpm
  maxima-debuginfo-5.9.1-4.fc4.i386.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-1.fc4.i386.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-7.fc4.i386.rpm
  php-mmcache-debuginfo-5.0.4_2.4.6-8.fc4.i386.rpm
  php-eaccelerator-debuginfo-5.0.4_0.9.4-2.fc4.i386.rpm

Expiring (keep = 2): /extras/3/SRPMS
Pruning: /extras/3/x86_64
  check-0.9.3-1.fc3.x86_64.rpm
  ghc-doc-6.4-1.fc3.x86_64.rpm
  ghc64-6.4-1.fc3.x86_64.rpm
  ghc64-prof-6.4-1.fc3.x86_64.rpm
  libtidy-0.99.0-2.20040916.x86_64.rpm
  libtidy-devel-0.99.0-2.20040916.x86_64.rpm
  plone-2.1-0.1.alpha2.fc3.noarch.rpm
  python-reportlab-1.19-2.x86_64.rpm
  revelation-0.3.4-1.noarch.rpm
  torcs-data-cars-Patwo-Design-1.2.2-1.noarch.rpm
  tidy-0.99.0-2.20040916.x86_64.rpm
  torcs-data-cars-kcendra-gt-1.2.2-1.noarch.rpm
  torcs-data-cars-VM-1.2.2-1.noarch.rpm
  torcs-data-cars-kcendra-roadsters-1.2.2-1.noarch.rpm
  torcs-data-cars-kcendra-sport-1.2.2-1.noarch.rpm
  torque-localhost-2.1.0p0-2.fc3.x86_64.rpm
  abicheck-debuginfo-1.2-3.x86_64.rpm
  maxima-debuginfo-5.9.1-4.fc3.x86_64.rpm
  python-reportlab-debuginfo-1.19-2.x86_64.rpm
  tidy-debuginfo-0.99.0-2.20040916.x86_64.rpm
Pruning: /extras/3/i386
  allegro-4.0.3-7.i386.rpm
  allegro-devel-4.0.3-7.i386.rpm
  allegro-tools-4.0.3-7.i386.rpm
  check-0.9.3-1.fc3.i386.rpm
  epydoc-2.1-2.i386.rpm
  ghc-doc-6.4-1.fc3.i386.rpm
  ghc64-6.4-1.fc3.i386.rpm
  ghc64-prof-6.4-1.fc3.i386.rpm
  gnome-vfsmm26-2.6.1-1.i386.rpm
  gnome-vfsmm26-devel-2.6.1-1.i386.rpm
  libgnomemm26-devel-2.6.0-1.i386.rpm
  libgnomemm26-2.6.0-1.i386.rpm
  libgnomeuimm26-devel-2.6.0-1.i386.rpm
  libgnomeuimm26-2.6.0-1.i386.rpm
  plone-2.1-0.1.alpha2.fc3.noarch.rpm
  revelation-0.3.4-1.noarch.rpm
  torcs-data-cars-kcendra-roadsters-1.2.2-1.noarch.rpm
  torcs-data-cars-Patwo-Design-1.2.2-1.noarch.rpm
  torcs-data-cars-VM-1.2.2-1.noarch.rpm
  torcs-data-cars-kcendra-gt-1.2.2-1.noarch.rpm
  torcs-data-cars-kcendra-sport-1.2.2-1.noarch.rpm
  torque-localhost-2.1.0p0-2.fc3.i386.rpm
  wxGTK-2.4.2-7.i386.rpm
  wxGTK-common-2.4.2-7.i386.rpm
  wxGTK-common-devel-2.4.2-7.i386.rpm
  wxGTK-devel-2.4.2-7.i386.rpm
  wxGTK-gl-2.4.2-7.i386.rpm
  wxGTK-stc-2.4.2-7.i386.rpm
  wxGTK-xrc-2.4.2-7.i386.rpm
  wxGTK2-2.4.2-7.i386.rpm
  wxGTK2-devel-2.4.2-7.i386.rpm
  wxGTK2-gl-2.4.2-7.i386.rpm
  wxGTK2-stc-2.4.2-7.i386.rpm
  wxGTK2-xrc-2.4.2-7.i386.rpm
  xtide-2.8-1.i386.rpm
  abicheck-debuginfo-1.2-3.i386.rpm
  allegro-debuginfo-4.0.3-7.i386.rpm
  epydoc-debuginfo-2.1-2.i386.rpm
  gnome-vfsmm26-debuginfo-2.6.1-1.i386.rpm
  libgnomemm26-debuginfo-2.6.0-1.i386.rpm
  libgnomeuimm26-debuginfo-2.6.0-1.i386.rpm
  maxima-debuginfo-5.9.1-4.fc3.i386.rpm
  wxGTK-debuginfo-2.4.2-7.i386.rpm
  xtide-debuginfo-2.8-1.i386.rpm




More information about the fedora-extras-list mailing list