
Estamos intentando crear un paquete i386 .deb compatible con múltiples arcos. Hay dos paquetes .deb creados en i386 X1 y X2 (X2 es un subconjunto de archivos binarios X1). X1 <-> X2 entran en conflicto entre sí al instalar. Sólo se puede instalar un paquete .deb en cualquier instancia.
De manera similar, tenemos binarios en el arco xa64. Nuevamente en xa64, hay dos paquetes .deb X1 y X2 (X2 es un subconjunto de archivos binarios X1). X1 <-> X2 entran en conflicto entre sí al instalar. Sólo se puede instalar un paquete .deb en cualquier instancia.
En el caso del paquete i386 .deb de múltiples arcos, los paquetes i386 .deb (X1 y X2) se pueden instalar en xa64 junto con los de 64 bits (X1 y X2)
Sin embargo, veo que al instalar X1:i386 y X1:amd64 pueden coexistir. Sin embargo, arroja un error de conflicto al intentar instalar X1:i386 y X2:amd64.
En resumen, ¿podemos marcar el paquete como conflictivo según arch Conflict: X2:i386?
El paquete X1:i386 solo debe entrar en conflicto con X2:i386 y permitir que otros paquetes coexistan. El paquete X1:amd64 solo debe entrar en conflicto con X2:amd64 y permitir que otros paquetes coexistan.
X1:i386 puede coexistir con X1:amd64 O X2:amd64 X2:i386 puede coexistir con X1:amd64 O X2:amd64
Gracias por su respuesta
Respuesta1
Las relaciones pueden estar restringidas a un determinado conjunto de arquitecturas. Esto se indica entre paréntesis después de cada nombre de paquete individual y la especificación de versión opcional. Los corchetes encierran una lista no vacía de nombres de arquitectura Debian en el formato descrito en Cadenas de especificación de arquitectura, Sección 11.1, separados por espacios en blanco. Se pueden anteponer signos de exclamación a cada uno de los nombres. (No está permitido que algunos nombres vayan precedidos de signos de exclamación mientras que otros no).
https://www.debian.org/doc/debian-policy/ch-relationships.html
Este manual proporciona un conjunto de ejemplos; consulte, por ejemplo:
Depends: foo [i386], bar [amd64]
Es posible que pueda utilizar arch-specific Conflicts:
y Replaces:
con esta sintaxis. No estoy seguro de cómo decir "X1 entra en conflicto/reemplaza a X2 de la misma arquitectura", eso es para que usted investigue/pruebe. No estoy seguro si algo como esto funcionaría:
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]
No estoy seguro de si puede tener dos paquetes con el mismo nombre pero con arquitecturas diferentes. Aún así, es un punto de partida para que experimentes. Asegúrese de leer el manual de políticas; el capítulo 7 describe cómo funcionan las relaciones con gran detalle.