deb 패키지를 생성할 때 파일을 강제로 덮어쓰는 방법은 무엇입니까?

deb 패키지를 생성할 때 파일을 강제로 덮어쓰는 방법은 무엇입니까?

programX.Y의 deb 패키지를 생성하려고 하는데 다음 내용으로 deb 패키지를 생성하면 대상 시스템에 동일한 프로그램이지만 다른 버전(programX.Z)이 존재할 수 있습니다.

dpkg-buildpackage -us -uc --source-option=--include-binaries --source-option=-isession

다른 버전의 프로그램(programX.Z)이 있는 시스템에 패키지를 설치하려고 하면 다음과 같은 메시지가 나타납니다.

dpkg: error processing programX.Y.deb (--install):
    trying to overwrite `/usr/lib/XXX', which is also in package programX.Z

--force-overwrite를 전달하면 문제를 해결할 수 있다는 것을 알고 있지만 그 솔루션은 원하지 않습니다.

문제는 시스템에 설치될 수 있고 프로그램 버전을 자동으로 강제로 무시할 수 있는 deb 패키지를 만드는 방법입니다. 대표적인 것이 파이썬이다. Python3에는 다양한 버전(3.1, 3.2, 3.3, 3.4, 3.5...)이 있습니다. python3.4가 이미 설치된 시스템에 사용자 정의 Python 패키지 버전 3.6을 설치하고 싶습니다.

가능한?

답변1

동등한 패키지를 만들 수는 없지만 --force-overwrite다른 솔루션이 있습니다.

  • 패키지는 충돌하는 파일을 다른 곳으로 이동할 수 있으며 이를 전송이라고 하며 다음을 사용하여 처리됩니다.dpkg-divert.
  • 두 패키지에 공통된 파일(충돌하게 만드는)은 일반적으로 세 번째 패키지에서 제공됩니다(동일하다고 가정). 이는 /usr/lib/XXX귀하의 문제에 적합한 솔루션일 수 있습니다.
  • 여러 버전의 패키지를 동시에 설치할 수 있으며 원하는 경우 대체 패키지 또는 "기본" 패키지를 사용하여 기본값을 선택할 수 있습니다. 이것은 Python 인터프리터 패키지인 GCC 컴파일러가 취하는 접근 방식입니다. 현재 데비안이 불안정한 상태에서는 Python 3.5 및 3.6을 사용할 수 있으며 나란히 설치할 수 있습니다. 기본 Python 3(3.5)은 python3패키지의 심볼릭 링크를 사용하여 결정 됩니다. 세트 .

관련 정보