On Wed, Mar 24, 2021 at 12:37:46PM -0400, Otto Kekäläinen wrote: > I've noticed I've spent quite a lot of time debugging various > situations where the debian/control definitions for > depends/breaks/replaces/conflicts/provides are not optimal.
Thanks for asking about this, I could also use some tips! I have some ideas that aren't great. Hopefully somebody has better ones. > The waste of time is two-fold: > > 1) apt is not verbose enough > 2) the cycle to rebuild/tests is too slow > > As an example of 1, sometimes I see this: > > apt install mariadb-client > The following packages have unmet dependencies: > mariadb-client : Depends: mariadb-client-10.5 (>= 1:10.5.10) but it > is not going to be installed > > apt install mariadb-client-10.5 > Installing.. Done! > > When this happens I have no idea why apt did not resolve the > dependency by itself automatically, as there was no real conflict in > installing it. > > Do you have tips on how to debug the root cause of situations like these? Sometimes I try aptitude's interactive solver - I keep saying 'n' to the alternatives and try to spot a pattern. It's not a great technique, I don't know if it could help with your case above - I'm usually looking at upgrades of numerous packages at once. I'd like to be able to automate testing relationships: provide some constraints that I know should be satisfied, and have a tool automatically check them based on the source and built packages. I wonder if there's any prior art? > For the problem 2, I hate to rebuild all of the packages (and > binaries) just because there was a change in debian/control and go > through the hassle of updating a test repo etc. > > I wonder if there is some other "lighter" way to just edit the > debian/control and produce new binary packages with them updated > without having to actually build new binary packages (and no, editing > the .deb files manually and repackaging them with 'ar' is not an > option that would make life easier). `dpkg-buildpackage -nc` skips the clean - this can at least avoid the recompile. I don't know how to do this in a chroot though, so I have to flip out of sbuild. Ross