여러 Debian/Ubuntu 배포판용 바이너리를 빌드하고 게시하는 방법은 무엇입니까?

여러 Debian/Ubuntu 배포판용 바이너리를 빌드하고 게시하는 방법은 무엇입니까?

독점 소프트웨어의 경우 여러 배포용으로 여러 버전의 소프트웨어를 구축하고 릴리스하고 싶습니다. 예를 들어 1.0, 1.1 및 스퀴즈, 가스프 및 정밀도에 대한 두 가지 버전이 있습니다.

빌드는 다른 컴퓨터에서 자동으로 실행되고 배포별 .deb파일을 생성합니다. 배포판별 방법은 라이브러리의 배포판별 버전에 연결하는 것입니다. 예를 들어 OpenSSL 0.9.8은 squeeze에 사용되고 1.0.1은 gasp에 사용됩니다. 그러나 이러한 패키지는 동일한 버전 번호와 패키지 이름으로 빌드됩니다. 이것이 아래 문제의 원인일 수 있습니다.

현재 저는 reprepro와 includedeb명령을 사용하여 저장소에 바이너리를 추가하고 있습니다. 이는 두 번째 릴리스용으로 구축된 동일한 패키지 버전을 추가할 때까지 훌륭하게 작동합니다.

Squeeze는 훌륭한 릴리스를 제공합니다.

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb

그러나 wheezy를 기반으로 구축된 동일한 버전의 소프트웨어를 출시하는 것은 실패했습니다.

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb wheezy /path/to/wheezypackages/packagename-1.0.deb 
/path/to/wheezypackages/packagename-1.0.deb: component guessed as 'main'
ERROR: '/path/to/wheezypackages/packagename-1.0.deb' cannot be included as 'pool/main/p/packagename/packagename_1.0_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: e7df7cd2ca07f4f1ab415d457a6e1c13, got: 0fa924209085a5713f79e6a30649455f
sha1 expected: 947b41827bbac414baddf0648b9abecaad8de4fe, got: 1be168ff837f043bde17c0314341c84271047b31
sha256 expected: a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4, got: a93dbf1e95ddc4cfa84e9cd3cfa6c9e0e14affd79812abde4bca688224430a65
size expected: 1234, got: 1235
There have been errors!

내 빌드에는 각 릴리스마다 고유한 버전 번호가 있어야 한다고 가정합니다.

  • 이것을 달성하는 가장 쉬운 방법은 무엇입니까?
  • 현재 버전 번호에 어떻게 추가할 수 있나요? 1.1~wheezy, 1.1+wheezy, 1.1-1(증분) 등을 사용하는 것이 좋습니다 1.1+deb6? 앞으로는 jessiedist 업그레이드 중에 시스템이 이를 인식하기를 원합니다. distro 이름을 사용하는 것만으로는 j이전처럼 작동 하지 않고 wAPT에서 이전 버전으로 인식될 것이라고 생각합니다.
  • 버전 번호를 설정하는 방법을 알아낸 후 이를 도구에 어떻게 추가합니까? debian/control파일이 구축된 배포판과 관련된 버전 번호를 얻으려면 파일에서 경험적 방법을 수행 해야 할 것 같습니다 . 변경 로그의 경우 dch해당 버전 번호와 일치하도록 전화해야 합니다 .

답변1

개인적으로 저는 릴리스당 하나의 아카이브만 만들겠습니다.

이렇게 하면 문제가 해결되고 각 아카이브가 더 작아진다는 이점이 있습니다. (클라이언트가 더 빠르게 다운로드하고 구문 분석합니다.)

관련 정보