Debian Salsa Git에서 Postfix를 빌드하는 방법은 무엇입니까? (gbp: 오류: upstream/3.3.2는 유효한 트리 구조가 아닙니다)

Debian Salsa Git에서 Postfix를 빌드하는 방법은 무엇입니까? (gbp: 오류: upstream/3.3.2는 유효한 트리 구조가 아닙니다)

데비안 패키지 "postfix"를 다시 빌드하고 싶습니다. 멋진 것은 없으므로 로컬 패치나 서명되지 않은 패키지는 트릭을 수행하지 않습니다.

내가 시도한 것은 다음과 같습니다.

  1. 일부 종속성을 설치합니다.

    $ apt install fakeroot git-buildpackage
    $ apt build-dep postfix
    

    (내 빌드 컴퓨터의 Postfix는 내가 빌드하려는 것과 동일하거나 유사한 버전이므로 대부분의 빌드 종속성이 제대로 설치됩니다. 빌드 종속성 문제도 없습니다.)

  2. 데비안 소스 복제:

    $ git clone https://salsa.debian.org/postfix-team/postfix-dev.git
    

    작성 당시 값은 c21140525af28be0e1bacd932e85b96babe6ca98(태그: v3.3.2-4)을 가리킵니다.

  3. 복제할 CD:

    $ cd postfix-dev
    
  4. IIUC, 이제 다음과 같은 명령을 사용하여 패키지를 빌드할 수 있습니다.

    $ gbp buildpackage -uc -us
    

    (서명되지 않은 패키지를 만드는 데는 두 가지 옵션이 있습니다.)

그러나 마지막 단계에서 오류가 발생합니다.

gbp:error: upstream/3.3.2 is not a valid treeish

답변1

이 소프트웨어(Postfix)는 업스트림 Git에서 제공되지 않는 것으로 보이지만 이 저장소의 태그로 수동으로 가져옵니다. 태그는 v3.3.2업스트림 소스를 반영하는 것 같습니다(디렉토리를 포함하지 않음 debian/).

이 저장소는 형식의 기본 태그 이름을 따르지 않는 것 같습니다 upstream/<version>. 이는 관리자 오류이거나 개인 취향일 수 있습니다.

보다git-buildpackage 맨페이지다음 두 가지 옵션의 경우:

--git-upstream-tree=[BRANCH|SLOPPY|TAG|TREEISH]
    How to find the upstream sources used to generate the tarball.
    TAG (the default) [...]

--git-upstream-tag=TAG-FORMAT
    Use this tag format when looking for tags of upstream versions to build the
    upstream tarballs. Default is upstream/%(version)s. [...]

이는 git의 모든 헤드를 업스트림 브랜치로 수동으로 가리킬 수 있음을 의미합니다. 주문하다

$ gbp buildpackage --git-upstream-tag='v%(version)s' -us -uc

Postfix 패키지가 잘 빌드될 것입니다!

중요한! git 저장소를 완전히 정리해야 할 수도 있습니다. 그렇지 않으면 git status모든 것이 깨끗하다고 ​​알려졌음에도 불구하고 로컬에서 수정된 파일을 확인할 때 오류가 발생할 수 있습니다.


자동화된 빌드를 보다 효율적으로 얻으려면 Postfix를 빌드하는 데 필요한 항목만 가져오는 방법이 있습니다.

# Fetch Debian-version tag (notice the -<digit> suffix).
$ git clone -b v3.3.2-4 --depth 1 https://salsa.debian.org/postfix-team/postfix-dev.git
$ cd postfix-dev

# Fetch the upstream tag
$ git fetch --depth 1 origin refs/tags/v3.3.2:refs/tags/v3.3.2

# Because we're not on 'master' (not on any branch actually), we need to add
# the --git-ignore-branch option.
$ gbp buildpackage --git-upstream-tag='v%(version)s' --git-ignore-branch -us -uc

관련 정보