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
signature.asc
Description: PGP signature