[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Tips for debugging/testing debian/control Depends/Breaks etc changes?

On Mon, Mar 29, 2021 at 07:12:18AM -0700, Otto Kekäläinen wrote:
> apt install --with-source ./Packages -s mariadb-server mariadb-client
> libmariadbclient18

I just want to add here, that --with-source also works with other apt
commands like "upgrade". Depending on what you want to test, it might
be more realistic to use these rather than making complicated explicit
requests no 'normal' user will ever perform.

> The debugging options produce a ton of output which I did not yet
> learn to ready, but I'll paste it here below for reference for others
> to see what the resolver debug output looks like:

On the surface the problem you are facing is:

> Broken mariadb-server-10.5:amd64 Conflicts on mysql-server:amd64 < 5.7.30-0ubuntu0.18.04.1 -> 5.7.33-0ubuntu0.18.04.1 @ii umU > (< 1:10.5.10+maria~bionic)
>   Considering mysql-server:amd64 0 as a solution to mariadb-server-10.5:amd64 0
>   MarkKeep mariadb-server-10.5:amd64 < none -> 1:10.5.10+maria~bionic @un uN Ib > FU=0
>   Holding Back mariadb-server-10.5:amd64 rather than change mysql-server:amd64

That is one of the first decisions the problem resolver (second half)
makes as these two packages want to be installed, but no sufficient
reason is found to remove what works currently on the system
(mysql-server) by bringing in something else (mariadb-server-10.5).
The second line has them both listed as having 0 points – packages earn
points by being depended on by other installed packages, lose some for
conflicts on them, and a bunch of other reasons in both categories.

Users hate then packages are removed, so apt tends to hate that, too.
apt and friends even have entire commands which allow you to upgrade as
far as you can go without removes as upgrades usually give you new
features (and bugs) to play with while removes do the opposite.

For me, this whole situation seems wrong though. Why do you have
versioned package names (mariadb-server-*) when they are all mutually
exclusive with one another due to all shipping the same binary?

Either embrace versioned names like e.g. gcc/clang do or drop the
pretense and ship an unversioned mariadb-server. Most packages aren't
packaged versioned after all and that is (mostly) fine (same for client
and co which only makes this more complicated and worse).

Mixing the two causes your users to experience the worst of both worlds:
The packages can not be co-installed forcing them through the change in
one sitting and they are an upgrade nightmare as there will always be
one more situation in which apt (or another resolver, or even a human)
decides that (part of) an upgrade is not worth the perceived cost.

Best regards

David Kalnischkies

Attachment: signature.asc
Description: PGP signature

Reply to: