web-dev-qa-db-ja.com

ubuntu / debianパッケージを構築するために何を使用しますか?

最近、さまざまなハウツーやパッケージの作成方法に関するガイドを調べています。そして、 lot of ways 1つが goaboutit であるようです。だから私は正確に何を使うべきかについて少し混乱しています。それは私が全体像を見ようとしているということです。どのようなツールが存在しますか?それらの間の関係は何ですか?ラッパーはどれですか?どちらが何に適していますか?お気に入り、 apt-get source is おそらく 開発者ではなく、主にユーザーを対象としています。 より良い代替dgetでなければなりません。どちらの選択肢がありますか?いくつか例を挙げると、pbuilderpdebuildpbuilder-distcowbuildersbuilddebuilddpkg-buildpackagefakeroot。そして、私も知らないことがもっとたくさんあるに違いありません。最も一般的なワークフローは何ですか?

2
x-yuri

私が何とか見つけたもの。まず、 この簡単な説明 があります。これは私がここで主に尋ねるものです。

ビルドシステムの中核にはdpkg-buildpackagesがあり、これはfakerootを使用し、次にdebian/rules(makefile)を実行してパッケージをビルドします。そして、それを実行しているリリースの内部使用のためのパッケージを構築する場合は、それで十分かもしれません。

一方、debian/ubuntuに貢献することを目的としている場合は、少なくともdebuildを使用します。これはlintianを実行します。ファイルに署名します。

さまざまなdebian/ubuntuリリースをターゲットにする場合は、pbuilderを使用します。これは、特に、インストール済みのクリーンな環境でパッケージをビルドします。実際の依存関係を確認するためのパッケージ。問題をさらに単純化するためにpbuilder-distを使用することを検討するかもしれません。

「デビルドを行うpbuilderの方法」と言われるpdebuildがあります。 lintianが実行されているようには見えませんが、pbuilderの方法と一致していない可能性があります。

次に、パッケージのビルドを高速化したい場合は、cowbuilderもあります(pbuilderのラッパー)。 gitリポジトリから構築するためのツールもありますが、私は掘り下げていません。

[〜#〜] upd [〜#〜]#debian-mentorsで、「sbuildは同じように動作すると言われていますbuilddとして、驚きは少ない」、「pbuilderの実験的サポートは間違っている」、「OTOH sbuildは、ビルドプロセスからネットワークを奪うための何かをまだ見逃している」 、およびそのpbuilderは維持されません。パッケージの構築はネットワークの存在に依存してはならず、何もダウンロードしてはならないため、ネットワークを取り除く必要があります。

schroot from Experimental おそらくネットワークを分離(共有解除)することができます。

2
x-yuri

ソース環境についてはあまり言いません。

オープンソースでプロジェクトが1つ(debian/ディレクトリの下にある制御ファイルが1つ)の場合、 https://launchpad.net は本当に良い解決策です。多かれ少なかれ、ファイルを正しく取得する必要があり、残りはファイルが処理します。

ファイルを正しく取得することは、今でも私にとっては少し魔法ですが、パッケージの作成方法に関するドキュメントはたくさんあります。動作する非常に単純な例から始めて、次に進むにつれて他のオプション/機能を追加する時間をとることができます。そうすれば、すべてのインとアウトを一度に学ぶ必要はありません。

1
Alexis Wilke