
Estamos tentando construir um pacote i386 .deb com suporte para vários arcos. Existem dois pacotes .deb construídos em i386 X1 e X2 (X2 é um subconjunto de binários X1). X1 <-> X2 entram em conflito entre si durante a instalação. Apenas um pacote .deb pode ser instalado em qualquer instância.
Da mesma forma, temos binários no arco xa64. Novamente no xa64, existem dois pacotes .deb X1 e X2 (X2 é um subconjunto de binários X1). X1 <-> X2 entram em conflito entre si durante a instalação. Apenas um pacote .deb pode ser instalado em qualquer instância.
No caso de pacote i386 .deb multi-arch, pacotes i386 .deb (X1 e X2) podem ser instalados em xa64 junto com 64 bits (X1 e X2)
No entanto, vejo que ao instalar X1:i386 e X1:amd64 podem coexistir. No entanto, ocorre um erro de conflito ao tentar instalar X1:i386 e X2:amd64
Resumindo, podemos marcar o pacote como conflito com base no arch Conflict: X2:i386
O pacote X1:i386 deve entrar em conflito apenas com X2:i386 e permitir que outros pacotes coexistam O pacote X1:amd64 deve entrar em conflito apenas com X2:amd64 e permitir que outros pacotes coexistam
X1:i386 pode coexistir com X1:amd64 OU X2:amd64 X2:i386 pode coexistir com X1:amd64 OU X2:amd64
Obrigado pela sua resposta
Responder1
Os relacionamentos podem ser restritos a um determinado conjunto de arquiteturas. Isto é indicado entre colchetes após cada nome de pacote individual e a especificação de versão opcional. Os colchetes incluem uma lista não vazia de nomes de arquitetura Debian no formato descrito em Strings de especificação de arquitetura, Seção 11.1, separados por espaços em branco. Pontos de exclamação podem ser acrescentados a cada um dos nomes. (Não é permitido que alguns nomes sejam acrescentados com pontos de exclamação e outros não.)
https://www.debian.org/doc/debian-policy/ch-relationships.html
Este manual fornece um conjunto de exemplos, veja por exemplo:
Depends: foo [i386], bar [amd64]
Você pode usar específico do arco Conflicts:
e Replaces:
com esta sintaxe. Não tenho certeza de como dizer "X1 entra em conflito/substitui X2 da mesma arquitetura", isso é para você pesquisar/tentar. Não tenho certeza se algo assim funcionaria:
package: X1
Architecture: i386
Conflicts: X2 [i386]
Replaces: X2 [i386]
package: X1
Architecture: amd64
Conflicts: X2 [amd64]
Replaces: X2 [amd64]
package: X2
Architecture: i386
Conflicts: X1 [i386]
Replaces: X1 [i386]
package: X2
Architecture: amd64
Conflicts: X1 [amd64]
Replaces: X1 [amd64]
Não tenho certeza se você pode ter dois pacotes com o mesmo nome, mas com arquiteturas diferentes. Ainda assim, é um ponto de partida para você experimentar. Certifique-se de ler o manual de políticas, o capítulo 7 descreve detalhadamente como os relacionamentos funcionam.