aptly-dev / aptly

aptly - Debian repository management tool
https://www.aptly.info/
MIT License
2.54k stars 369 forks source link

adding new component to published repo #1242

Open TimoSairiala opened 5 months ago

TimoSairiala commented 5 months ago

I have a local repo which I have published already. But I have to add deb packages with another component name to this same published repo. Is there any way to publish it again with new component name included without dropping the already published repo?

Detailed Description

What I do is I have one published repo:

aptly repo create -distribution=my_test -component=main test-adding-component
aptly repo add test-adding-component humble/main/amd64
aptly publish repo -architectures="amd64" test-adding-component

=> so far so good now I have to add more packages with another component name

aptly repo create -distribution=my_test -component=added-component test-adding-component-custom
aptly repo add test-adding-component-custom humble/test_add/amd64/
aptly publish repo -architectures="amd64" -component=, test-adding-component test-adding-component-custom

This last publishing gives an error because this is already published: ERROR: prefix/distribution already used by another published repo: ./my_test [amd64] publishes {main: [test-adding-component]}

Context

I am running aptly on nas with big amount of deb packages and what ever I do it takes ages. If I run aptly publish drop it also means that repo is not accessible for a while. It is possible I am just doing something wrong or misunderstood instructions, maybe I should be running it another way?

Possible Implementation

maybe some sort of republish or force parameter would do the trick or possibly there already exists something?

alamaral commented 3 months ago

I had exactly the same problem, until a minute ago. To drop the publish you need to find the distribution and prefix from he aptly publish list command:

root@foobar:/var/aptly# aptly publish list Published repositories:

The distribution here is jammy and the prefix is stuff, so to drop the publish the command is:

aptly publish drop jammy stuff.

While this works just find for unpublishing the repo so you can add a new component to it, you LOSE EVERYTHING THAT YOU HAD PUT INTO THE EXISTING REPO...

Yup. You're screwed big time...

I believe that this is a MAJOR flaw in aptly. You should be able to either add a new component to a published repo, or somehow unpublish the repo without destroying it in the process.

It has been suggested to me to use snapshots, but my repo changes constantly because we use gitlab CI/CD and every single checkin to gitlab builds a package that ends up in aptly. Plus I reluctantly inherited what I've got, and don't want to change how this works.