Package: libcurl3t64-gnutls
Version: 8.20.0-3
Severity: important
X-Debbugs-Cc: [email protected]

libcurl3t64-gnutls (<= 8.20.0-2) was Architecture: any, Multi-Arch: same.

The new libcurl3t64-gnutls (>= 8.20.0-3) transitional package is 
Architecture: all, Multi-Arch: no. This means that it cannot satisfy the 
dependencies of packages from a foreign architecture, for example in 
current unstable:

$ podman run --rm -it debian:sid-slim
# dpkg --add-architecture i386
# apt update
# apt full-upgrade
# apt install libproxy1v5{,:i386}
Solving dependencies... Error!
...
 libproxy1v5 : Depends: libcurl3t64-gnutls (>= 7.16.2) but it is not going to 
be installed
...
 libproxy1v5:i386 : ...
                    Depends: libcurl3t64-gnutls:i386 (>= 7.16.2) but it is not 
installable

I think this is going to prevent testing migration (at least until 
reverse-dependencies get rebuilt), and if it migrates it's likely to 
cause trouble when upgrading trixie systems to forky.

An Architecture: all package can never be a drop-in replacement for a 
multiarch library package: if it isn't Multi-Arch: foreign then it will 
not satisfy foreign packages' dependencies, breaking installability, but 
if it was M-A: foreign then it would not pull in libcurl4-gnutls:i386, 
breaking the foreign package at runtime.

In general, to make upgrades go smoothly, transitional packages should 
usually have the same Architecture and Multi-Arch status as the package 
that replaces them: in this case, that's libcurl4-gnutls, which is 
correctly Arch: any, M-A: same.

The usual reason to want Architecture: all is to save space in the 
archive, but having 8 copies of the transitional package instead of one 
won't take a significant amount of extra space, because transitional 
packages should be very small anyway.

Thanks,
    smcv

Reply via email to