Debianパッケージ"postfix"を再構築したいです。素晴らしいものはないので、ローカルパッチや署名されていないパッケージはトリックを実行しません。
私が試したことは次のとおりです。
いくつかの依存関係をインストールします。
$ apt install fakeroot git-buildpackage $ apt build-dep postfix
(私のビルドコンピュータのPostfixは私がビルドしたいのと同じか類似したバージョンなので、ほとんどのビルド依存関係が正しくインストールされています。ビルド依存関係の問題もありません。)
Debian ソースの複製:
$ git clone https://salsa.debian.org/postfix-team/postfix-dev.git
作成時の値はc21140525af28be0e1bacd932e85b96babe6ca98(タグ:v3.3.2-4)を指します。
複製するCD:
$ cd postfix-dev
IIUC では、次のコマンドを使用してパッケージをビルドできるようになりました。
$ gbp buildpackage -uc -us
(署名されていないパッケージを作成するには2つのオプションがあります。)
ただし、最後のステップでエラーが発生します。
gbp:error: upstream/3.3.2 is not a valid treeish
答え1
このソフトウェア(Postfix)はアップストリームGitでは提供されていないようですが、このリポジトリのタグとして手動でインポートされます。タグはv3.3.2
アップストリームソースを反映しているようです(ディレクトリを含まないdebian/
)。
このリポジトリはフォーマットのデフォルトタグ名に従わないようですupstream/<version>
。これは管理者エラーまたは個人的な好みの可能性があります。
よりgit-buildpackage マンページ次の2つのオプションの場合:
--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