.deb 패키지를 빌드할 때 아치별 충돌 태그를 어떻게 추가할 수 있나요?

.deb 패키지를 빌드할 때 아치별 충돌 태그를 어떻게 추가할 수 있나요?

우리는 다중 아키텍처를 지원하는 i386 .deb 패키지를 구축하려고 합니다. i386 X1 및 X2에는 두 개의 .deb 패키지가 빌드되어 있습니다(X2는 X1 바이너리의 하위 집합입니다). X1 <-> X2는 설치 시 서로 충돌합니다. 모든 인스턴스에 하나의 .deb 패키지만 설치할 수 있습니다.

마찬가지로 xa64 아치에도 바이너리가 있습니다. 다시 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를 설치하려고 하면 충돌 오류가 발생합니다.

즉, 아치 충돌: 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에 설명된 형식으로 공백으로 구분된 비어 있지 않은 데비안 아키텍처 이름 목록을 묶습니다. 각 이름 앞에 느낌표가 붙을 수 있습니다. (일부 이름에는 느낌표가 붙는 것이 허용되지 않지만 다른 이름에는 느낌표가 붙지 않습니다.)

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장에서는 관계가 어떻게 작동하는지 매우 자세히 설명합니다.

관련 정보