Wie können wir beim Erstellen eines .deb-Pakets ein architekturspezifisches Konflikt-Tag hinzufügen?

Wie können wir beim Erstellen eines .deb-Pakets ein architekturspezifisches Konflikt-Tag hinzufügen?

Wir versuchen, ein Multi-Arch-unterstütztes i386 .deb-Paket zu erstellen. Es gibt zwei .deb-Pakete, die auf i386 X1 und X2 erstellt wurden (X2 ist eine Teilmenge der X1-Binärdateien). X1 <-> X2 geraten bei der Installation miteinander in Konflikt. Es kann immer nur ein .deb-Paket installiert werden.

Wir haben ähnliche Binärdateien auf xa64 arch. Auch auf xa64 gibt es zwei .deb-Pakete X1 und X2 (X2 ist eine Teilmenge der X1-Binärdateien). X1 <-> X2 geraten bei der Installation miteinander in Konflikt. Es kann immer nur ein .deb-Paket installiert werden.

Im Falle eines Multi-Arch i386 .deb-Pakets können i386 .deb-Pakete (X1 und X2) auf xa64 neben 64-Bit (X1 und X2) installiert werden.

Ich sehe jedoch, dass bei der Installation von X1:i386 und X1:amd64 koexistieren können. Allerdings tritt ein Konfliktfehler auf, wenn versucht wird, X1:i386 und X2:amd64 zu installieren.

Kurz gesagt, können wir Pakete basierend auf Arch Conflict: X2:i386 als konfliktbehaftet markieren?

Das X1:i386-Paket sollte nur mit X2:i386 in Konflikt geraten und die Koexistenz anderer Pakete zulassen. Das X1:amd64-Paket sollte nur mit X2:amd64 in Konflikt geraten und die Koexistenz anderer Pakete zulassen.

X1:i386 kann mit X1:amd64 ODER X2:amd64 koexistieren. X2:i386 kann mit X1:amd64 ODER X2:amd64 koexistieren.

Danke für deine Antwort

Antwort1

Beziehungen können auf eine bestimmte Anzahl von Architekturen beschränkt sein. Dies wird in Klammern nach jedem einzelnen Paketnamen und der optionalen Versionsangabe angegeben. Die Klammern umschließen eine nicht leere Liste von Debian-Architekturnamen im Format, das in Architekturspezifikationszeichenfolgen, Abschnitt 11.1, beschrieben ist, getrennt durch Leerzeichen. Jedem der Namen können Ausrufezeichen vorangestellt werden. (Es ist nicht zulässig, dass einigen Namen Ausrufezeichen vorangestellt werden und anderen nicht.)

https://www.debian.org/doc/debian-policy/ch-relationships.html

Dieses Handbuch enthält eine Reihe von Beispielen, siehe zum Beispiel:

Depends: foo [i386], bar [amd64]

Möglicherweise können Sie mit dieser Syntax arch-specific Conflicts:und verwenden Replaces:. Ich bin mir nicht sicher, wie ich sagen soll „X1 steht im Konflikt mit/ersetzt X2 derselben Architektur“, das müssen Sie selbst recherchieren/ausprobieren. Ich bin mir nicht sicher, ob so etwas funktionieren würde:

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]

Ich bin mir nicht sicher, ob Sie zwei Pakete mit demselben Namen, aber unterschiedlicher Architektur haben können. Dennoch ist es ein Ausgangspunkt für Experimente. Lesen Sie unbedingt das Richtlinienhandbuch. In Kapitel 7 wird ausführlich beschrieben, wie Beziehungen funktionieren.

verwandte Informationen