在建置 .deb 套件時如何新增特定於 arch 的衝突標籤?

在建置 .deb 套件時如何新增特定於 arch 的衝突標籤?

我們正在嘗試建立多架構支援的 i386 .deb 套件。有兩個基於 i386 X1 和 X2 建構的 .deb 軟體包(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 Conflict: 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]

您也許可以使用特定於 arch 的Conflicts:andReplaces:語法。我不確定如何說“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 章詳細描述了關係如何運作。

相關內容