I am working for an ISV (Independent Software Vendor) who produces packages for
their platform-native product. Each release will create packages for Debian
Bookworm, Debian Bullseye, and Debian Trixie. All three packages will have same
name, version, and architecture. And following the Debian naming standard, all three
files will be named the same - component_1.0.0_amd64.deb
. However, the contents of these
packages will be different, as they contain platform-native libraries in them.
Due to how Debian repository’s flat pool structure works, when trying to
upload the package to same repository but to different distributions, the files
(having same filename) will overwrite one another in the pool directory.
This is because the path will be
/debian/pool/main/c/component/component_1.0.0_amd64.deb
.
Is it possible to somehow split the pool directory based on distributions (in
addition to component) so that package of each distribution go to its own
unique path and won’t conflict with package for another distribution?
So the path will be something like /debian/pool/<distribution>/main/c/component/component_1.0.0_amd64.deb
.
If not, are the following the only ways to work around this?
- Make each distribution essentially a Pulp repository, so that each of them
gets their owndists
andpool
directory. - Include distribution version in the package version (similar to the rpm
world), so that file names will be different and won’t overwrite.
Few other commercial products that I checked out did the
“split-pool-directory-per-distribution” logic. And I wanted to check if Pulp
also could do something similar.
PS: I am a Debian Developer, and I am very well aware of how Debian in the past
had distribution-specific locations for storing package files and why it was
moved to a global, flat level pool directory structure. But, given this might
be the case for other ISVs who produce similar packages, I wonder what is normally
done in these scenarios.
PPS: I found
which computes what the path should be and
which puts that value in the Packages file. I am also wondering if I can
somehow patch those lines in my Pulp instance to include the distribution name
also in the pool path.