web-dev-qa-db-ja.com

PPAアップロード用に `pbuilder`でソースパッケージをビルドする方法は?

pbuilderを使用してPPAにアップロードしようとしています。パッケージは次のコマンドでokをビルドします:

Sudo pbuilder build <package>_<version>.dsc

しかし、アップロードはエラーで失敗します:

Source/binary (i.e. mixed) uploads are not allowed.

pdebuildを使用してビルドする必要があると言われていますsource package、ただしpdebuildはビルドの依存関係を解決しません。このパッケージをビルドして、最終的にアップロードできるようにするにはどうすればよいですか?依存関係を手動でインストールしたくありません。

3

答えはそうではないということです。 pbuilderはソースパッケージを取得し、バイナリをビルドします。また、ソースパッケージをビルドせずにソースコードを取得して、自分でホストするか、自分のdebianリポジトリシステムに追加して自分でホストするバイナリを作成することもできます。

それは、PPAに必要なものではありません。


あなたがやりたいこと、そして私が強くお勧めするのは、従来のパッケージ化手順に従い、ソースコードdebuild -Sを含むパッケージのディレクトリを使用して、コードに対してdebian/を実行することです。フォルダ、およびその他すべて。

次に、debuild -Sでソースパッケージをビルドしたら、dputを使用して、ソースディレクトリの1つ上のディレクトリにある.changesファイルをPPAにアップロードできます。 (この手順は LaunchpadのPPAアップロードのヘルプドキュメントで参照 )。

理論的には、pdebuilderを使用してシステムをクリーンに保ち、chroot内でビルドできますが、以前の失敗の理由について、これに関する私の説明を読んでください。


コメントに従って、debhelperがautoreconfプラグインを見つけられないことを正しく識別しました。

また、この回答に関するコメントで述べたように、pbuilderpdebuilderはどちらも、debhelperの依存関係を判別するのに十分なほど賢くありません。

問題を解決してビルドできるようにするには、pbuilderまたはpdebuilderを手動で使用してchrootにログインする必要があります。次に、手動でdh-autoreconfをchrootにインストールする必要があります。通常、chrootにログインした後、apt-get install dh-autoreconfを使用します。

これを実行し、chrootの状態を保存すると、パッケージをpbuilderまたはpdebuilderできるようになります。

(ただし、私は伝統的にパッケージで作業することを好み、ビルドシステムが完全にクリーンであるかどうかは気にせず、実際にビルドするのはすべてソースパッケージであり、debhelperプラグインによってシステムが乱雑になることはありません)

4
Thomas Ward

pbuilderは、ソースパッケージからバイナリパッケージをビルドするために使用されます。 PPAは、ソースパッケージからバイナリパッケージもビルドします。単にdput the source.changesを作成したときに作成したファイル<package>_<version>.dscファイル。

pbuilderを使用する際の主なポイントの1つは、公式アーカイブとPPAの両方でバイナリパッケージをビルドするために使用されるクリーンなchroot環境をローカルで模倣することです。

2
andrewsomething