Hi, I'm attempting to upgrade a machine with MariaDB 10.6 from Buster to Bullseye using the official MariaDB repo. I was surprised to see that apt wanted to downgrade a few packages: ``` $ apt upgrade --without-new-pkgs The following packages will be DOWNGRADED: libmariadb-dev libmariadb-dev-compat libmariadb3 mysql-common ``` I was confused at first, as the priority of the candidate is higher, and the epoch is unchanged, and the upstream version is unchanged: ``` $ apt policy mysql-common mysql-common: Installed: 1:10.6.7+maria~buster Candidate: 1:10.6.7+maria~bullseye Version table: *** 1:10.6.7+maria~buster 100 100 /var/lib/dpkg/status 1:10.6.7+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main arm64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main ppc64el Packages 1:10.6.5+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main arm64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main ppc64el Packages 1:10.6.4+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main arm64 Packages 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main ppc64el Packages 5.8+1.0.7 500 500 http://debmirror.tuxis.nl/debian bullseye/main amd64 Packages $ apt policy libmariadb3 libmariadb3: Installed: 1:10.6.7+maria~buster Candidate: 1:10.6.7+maria~bullseye Version table: *** 1:10.6.7+maria~buster 100 100 /var/lib/dpkg/status 1:10.6.7+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.5+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.4+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.5.15-0+deb11u1 500 500 http://debmirror.tuxis.nl/debian bullseye/main amd64 Packages $ apt policy libmariadb-dev-compat libmariadb-dev-compat: Installed: 1:10.6.7+maria~buster Candidate: 1:10.6.7+maria~bullseye Version table: *** 1:10.6.7+maria~buster 100 100 /var/lib/dpkg/status 1:10.6.7+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.5+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.4+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.5.15-0+deb11u1 500 500 http://debmirror.tuxis.nl/debian bullseye/main amd64 Packages $ apt policy libmariadb-dev libmariadb-dev: Installed: 1:10.6.7+maria~buster Candidate: 1:10.6.7+maria~bullseye Version table: *** 1:10.6.7+maria~buster 100 100 /var/lib/dpkg/status 1:10.6.7+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.5+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.6.4+maria~bullseye 1000 1000 http://ams2.mirrors.digitalocean.com/mariadb/repo/10.6/debian bullseye/main amd64 Packages 1:10.5.15-0+deb11u1 500 500 http://debmirror.tuxis.nl/debian bullseye/main amd64 Packages ``` A simulation also reported that apt would 'downgrade' to the same versions: ``` $ apt upgrade --without-new-pkgs -s Inst libmariadb-dev [1:10.6.7+maria~buster] (1:10.6.7+maria~bullseye MariaDB:ams2.mirrors.digitalocean.com [amd64]) [] Inst libmariadb-dev-compat [1:10.6.7+maria~buster] (1:10.6.7+maria~bullseye MariaDB:ams2.mirrors.digitalocean.com [amd64]) [] Inst libmariadb3 [1:10.6.7+maria~buster] (1:10.6.7+maria~bullseye MariaDB:ams2.mirrors.digitalocean.com [amd64]) Inst mysql-common [1:10.6.7+maria~buster] (1:10.6.7+maria~bullseye MariaDB:ams2.mirrors.digitalocean.com [all]) ``` Some folks on IRC pointed me to the fact that the Debian revision has been updated from `maria~buster` to `maria~bullseye`. The following documentation at https://www.debian.org/doc/debian-policy/ch-controlfields.html#special-versi... says:
The lexical comparison is a comparison of ASCII values modified so that all the letters sort earlier than all the non-letters and so that a tilde sorts before anything, even the end of a part.
'bul' comes before 'bus', so the package for Bullseye is perceived as older, despite it being the same effective upstream version... According to https://www.debian.org/doc/debian-policy/ch-controlfields.html#special-versi..., the Debian revision should NOT contain the Debian release codename. This problem will re-appear with Bookworm. Could the package maintainer(s) attend to this? -- With kind regards, William Edwards