我们正在尝试构建支持多架构的 i386 .deb 包。有两个 .deb 包基于 i386 X1 和 X2 构建(X2 是 X1 二进制文件的子集)。安装时 X1 <-> X2 相互冲突。任何情况下只能安装一个 .deb 包。
同样,我们在 xa64 arch 上有二进制文件。同样在 xa64 上,有两个 .deb 包 X1 和 X2(X2 是 X1 二进制文件的子集)。安装时 X1 <-> X2 相互冲突。任何情况下只能安装一个 .deb 包。
对于多架构 i386 .deb 包,i386 .deb 包(X1 和 X2)可与 64 位(X1 和 X2)一起安装在 xa64 上
但是我发现安装 X1:i386 和 X1:amd64 时可以共存,但是尝试安装 X1:i386 和 X2:amd64 时会引发冲突错误
简而言之,我们可以根据 arch 冲突将包标记为冲突:X2:i386
X1:i386 软件包应仅与 X2:i386 冲突并允许其他软件包共存 X1:amd64 软件包应仅与 X2:amd64 冲突并允许其他软件包共存
X1:i386 可以与 X1:amd64 或 X2:amd64 共存 X2:i386 可以与 X1:amd64 或 X2:amd64 共存
感谢您的回复
答案1
关系可能仅限于一组特定的体系结构。这在每个单独的软件包名称和可选版本规范后的括号中表示。括号内是 Debian 体系结构名称的非空列表,其格式在体系结构规范字符串第 11.1 节中描述,以空格分隔。每个名称前面都可以加上感叹号。(不允许某些名称前面加上感叹号,而其他名称则不加。)
https://www.debian.org/doc/debian-policy/ch-relationships.html
本手册提供了一组示例,例如:
Depends: foo [i386], bar [amd64]
您可能能够使用特定架构的Conflicts:
语法Replaces:
。我不确定如何表达“X1 冲突/替换相同架构的 X2”,这需要您研究/尝试。我不确定这样的方法是否可行:
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]
我不确定您是否可以拥有两个名称相同但架构不同的包。不过,这是您进行实验的起点。请务必阅读策略手册,第 7 章详细介绍了关系的工作原理。