#! /usr/bin/python -tt import yum from urlgrabber.progress import format_number yb = yum.YumBase() yb.setCacheDir() # This requires 3.2.28, for the .verify() changes... digests2pkgs = {} digests2files = {} digests2size = {} current_pkg = None def _dump_file_digests(pfs): for pf in pfs: if not pf.verify_digest: continue if pf.ftype != "file": continue key = pf.digest digests2pkgs.setdefault(key, set()).add(pfs.po.name) digests2files.setdefault(key, set()).add(pf.filename) digests2size[key] = pf.size return [] for pkg in yb.rpmdb: pkg.verify(callback=_dump_file_digests) for digest in digests2pkgs: if len(digests2pkgs[digest]) == 1: continue print "Filename(s):", ", ".join(sorted(digests2files[digest])) print " Size:", format_number(digests2size[digest]) print " Digest:", digest num = 1 for pkgname in sorted(digests2pkgs[digest]): print " Package:", num, pkgname num += 1 print " Possible Saving:", format_number(digests2size[digest] * (len(digests2pkgs[digest]) - 1))