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 -- fedora-extras-list mailing list fedora-extras-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-extras-list