
マルチアーキテクチャ対応の i386 .deb パッケージをビルドしようとしています。i386 X1 と X2 でビルドされた 2 つの .deb パッケージがあります (X2 は X1 バイナリのサブセットです)。インストール時に X1 <-> X2 が競合します。どのインスタンスでも 1 つの .deb パッケージのみインストールできます。
同様に、xa64 アーキテクチャにもバイナリがあります。また、xa64 には、2 つの .deb パッケージ X1 と X2 があります (X2 は X1 バイナリのサブセットです)。インストール時に、X1 <-> X2 は互いに競合します。どのインスタンスでも、1 つの .deb パッケージのみをインストールできます。
マルチアーキテクチャ i386 .deb パッケージの場合、i386 .deb パッケージ (X1 および X2) は 64 ビット (X1 および X2) と並行して xa64 にインストールできます。
しかし、X1:i386とX1:amd64をインストールすると共存できることがわかります。ただし、X1:i386とX2:amd64をインストールしようとすると競合エラーが発生します。
つまり、アーキテクチャに基づいてパッケージを競合としてマークできますか? 競合: X2:i386
X1:i386 パッケージは X2:i386 とのみ競合し、他のパッケージの共存を許可する必要があります。X1:amd64 パッケージは X2:amd64 とのみ競合し、他のパッケージの共存を許可する必要があります。
X1:i386 は X1:amd64 または X2:amd64 と共存できます。X2:i386 は X1:amd64 または X2:amd64 と共存できます。
お返事をありがとうございます
答え1
関係は、特定のアーキテクチャ セットに制限される場合があります。これは、各パッケージ名とオプションのバージョン指定の後に括弧で示されます。括弧は、セクション 11.1 のアーキテクチャ指定文字列で説明されている形式で、空白で区切られた Debian アーキテクチャ名の空でないリストを囲みます。各名前の先頭に感嘆符を付けることができます。(一部の名前に感嘆符を付け、他の名前に付けないことは許可されていません。)
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]
同じ名前でアーキテクチャが異なる 2 つのパッケージを作成できるかどうかはわかりません。それでも、これは実験の出発点となります。ポリシー マニュアルを必ずお読みください。第 7 章では、関係がどのように機能するかについて詳細に説明しています。