Com o Raspbian e um kernel de 64 bits, estou buscando pacotes das seguintes fontes:
deb [arch=armhf] http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
deb http://deb.debian.org/debian stretch main contrib non-free
deb http://deb.debian.org/debian stretch-updates main contrib non-free
A tentativa de instalar as dependências mínimas para executar algo como gzip:arm64 relata conflitos como:
libgcc1 : Breaks: libgcc1:arm64 (!= 1:6.3.0-18+rpi1+deb9u1) but 1:6.3.0-18+deb9u1 is to be installed
gcc-6-base:arm64 : Breaks: gcc-6-base (!= 6.3.0-18+deb9u1) but 6.3.0-18+rpi1+deb9u1 is to be installed
Parece que os pacotes armhf "+rpi1" estão em conflito com os pacotes arm64 não-rpi1 . Mas isso significaria comparar versões de pacotes em duas arquiteturas diferentes!
Mensagens de erro com apt-get podem ser enganosas de qualquer forma, então para trazer meu sistema para um estado semelhante ao Debian Pi64 da bamarni (onde o multiarch funciona), posso tentar baixar alguns pacotes armhf não-rpi1 de links como https://packages. debian.org/stretch/armhf/libgcc1/download Depois de substituir libgcc1:armhf, gcc-6-base:armhf, libc6:armhf, libatomic1:armhf e outros, os conflitos básicos desaparecem e eu posso instalar libgcc1:arm64 gcc-6 -base:arm64 libc6:arm64 via apt. No entanto, essa não é uma ótima solução porque, no processo, provavelmente perdi a compatibilidade do ARMv6 e outras modificações específicas do Raspbian.
E o acima ainda pode significar que há algo mais suspeito escondido nos pacotes do Raspbian. Meu próximo teste é usar os arquivos Raspbian *.deb, exceto que com um script eu os reembalo para remover a +rpi1
parte do texto da versão em cada arquivo de controle. Depois de fazer isso e reinstalar esses pacotes, os conflitos com os pacotes arm64 desaparecem. Isso indica novamente que o APT está comparando versões de pacotes em duas arquiteturas diferentes.
Quando eu corro apt-cache show
em qualquer um deles, todos dizem com suas linhas Multi-Arch: same
correspondentes corretas . Architecture:
Pelo que entendi, só se preocuparia com versões em diferentes arquiteturas nos casos de Multi-Arch: foreign
ou Multi-Arch: allowed
.
O que está acontecendo aqui? Parece que o APT está comparando versões de pacotes em diferentes arquiteturas quando não deveria, o que leva a conflitos falsos. Eu me pergunto se o fato de o multiarch funcionar bem no Pi64 da bamarni ou no Ubuntu MATE - ou na maioria dos sistemas i386 + x86_64 - é em parte sorte que esses sistemas tenham versões de pacotes geralmente consistentes em 32 bits e 64 bits.