Isso é exigido pela especificação multiarch :
multiarch packages are required to be kept in lockstep; i.e., an implicit
Breaks: ${self}:other (!= ${binary:Version})
.
O motivo é que os pacotes sempre enviam alguns arquivos independentes de arco em diretórios compartilhados ( /usr/share/doc
), portanto, o sistema de gerenciamento de pacotes deve garantir que eles sejam idênticos entre as arquiteturas. Ele faz isso impondo versões idênticas entre as arquiteturas, mesmo com binNMUs.
Dentro de uma única distribuição, isso não é um grande problema, mas em todas as distribuições é.
Em seu caso especificamente, vamos considerar gcc-6-base
(pois é onde a documentação mora). A versão do Debian Stretch instala seu changelog em /usr/share/doc/gcc-6-base/changelog.Debian.gz
. Instalar o mesmo pacote para outras arquiteturas, usando a mesma versão, instala o mesmo arquivo. Por isso, embora haja um conflito tecnicamente, ele é ignorado. A versão Raspbian, no entanto, adiciona a seguinte entrada:
gcc-6 (6.3.0-18+rpi1+deb9u1) stretch-staging; urgency=medium
[changes brought forward from 6.1.1-1+rpi1 by Peter Michael Green <[email protected]> at Wed, 11 May 2016 20:
* Disable testsuite.
-- Raspbian forward porter <[email protected]> Thu, 01 Mar 2018 00:03:02 +0000
Agora, o /usr/share/doc/gcc-6-base/changelog.Debian.gz
não é mais idêntico. Se nós instalássemos as versões Debian Stretch e Raspbian Stretch do pacote lado a lado, qual versão do arquivo deveria ser mantida? Não há como decidir, então o sistema de embalagem proíbe totalmente a situação.