Package: reprepro
Version: 5.3.0-1.2
Severity: normal

Hi,

we are using reprepro for apt.postgresql.org. It's been running very
stable over the past years, so thanks for that.

The workflow is that every distribution exists twice:
  sid-pgdg sid-pgdg-testing
  bullseye-pgdg bullseye-pgdg-testing
  ...
Uploaded packages go into *-pgdg-testing (reprepro processincoming on
.changes files) and after inspection that everything still works as
expected, they get copied over to *-pgdg:
  reprepro copysrc sid-pgdg sid-pgdg-testing postgresql-foo

(This works even in the presence of binary cruft, PostgreSQL extension
packages are compiled per PG major version. Once some PG version NN
goes out of support, src:postgresql-foo will no longer build
bin:postgresql-NN-foo, but we keep them around in the repo as long as
they are still installable.)

Ever since, I've seen warnings from reprepro that the tracking
database was missing references when copysrc'ing a new version into a
distribution when the previous version in there had been binnmued. But
since everything worked as expected, I didn't pay attention.

Now I have been inspecting the pool directory more closely, and I
found a lot of +b1.deb files that should long have been removed since
they were replaced by newer versions, e.g.:

postgresql-11_11.5-3.pgdg110+1+b1_amd64.deb <-- old
postgresql-11_11.20-1.pgdg110+1_amd64.deb   <-- current

The old version is not listed by "reprepro ls postgresql-11".

It is reported by "reprepro reportcruft bullseye-pgdg":
  binaries-without-source bullseye-pgdg postgresql-10 10.10-2.pgdg110+1+b1
But since that list also includes "proper" cruft (binaries that are no
longer built from a source package) that we want to keep, this isn't
the best command to find these.

What works is to use removetrack:

$ reprepro --verbose removetrack bullseye-pgdg postgresql-11 11.5-3.pgdg110+1+b1
Removed postgresql-11_11.5-3.pgdg110+1+b1 from bullseye-pgdg.
Deleting files no longer referenced...
deleting and forgetting 
pool/main/p/postgresql-11/postgresql-11-dbgsym_11.5-3.pgdg110+1+b1_amd64.deb
deleting and forgetting 
pool/main/p/postgresql-11/postgresql-11-dbgsym_11.5-3.pgdg110+1+b1_ppc64el.deb
...

The problem seems to never happen on *-pgdg-testing (which gets filled
by processincoming), only on *-pgdg (which gets filled by copysrc), so
I suspect the problem to be in that area.

Christoph

Reply via email to