Ubuntuソースパッケージの依存関係ツリー


10

いくつかのパッケージがあります。それらA.debB.debと呼びましょうC.deb。各パッケージには、対応するソースパッケージA.dscA.tar.gzB.dscおよびB.tar.gzC.dscおよびがありC.tar.gzます。パッケージは互いに依存します:C.deb依存しB.debB.deb依存しますA.deb

を変更した場合A.deb、再構築する必要がありB.debます。そうしないと機能しません。同じことがのために行くB.debC.deb。このプロセスを自動化する方法はありますか?多分私のためにそれをするツールまたはスクリプトはありますか?そうでない場合、どうすれば自分で自動化できますか?

また、私のパッケージはありません。


2
「C.debはB.debに依存し、B.debはA.debに依存する」と言っているので、バイナリパッケージを参照していると思いますか?また、Aの外部ライブラリに対するBのコンパイルを参照していますか?もしそうなら、Aの開発者がそのようなライブラリのインターフェースを変更しなかったことを考えると、パッケージを再構築する必要はないはずです(したがって、これはBのマンテナーではなく、Aのマンテナーに任されています。 ;あなたがそれらすべての開発者である場合は、単にそのインターフェースからA不可知論の実装を可能な限り維持するだけで、互換性が最大限に保証されます)。
kos

1
Linuxではこのレベルでの作業はしていませんが、それmakeが発明された理由だと思います。makefileには、何が変更されたかに基づいて、何を再コンパイルまたは再構築する必要があるかを決定するルールが含まれています。
Joe

1
@xiaodongjie-あなたは親愛なる質問を持つ親愛なる人物です-あなたはすでにbashとbashスクリプトを知っていますか?--->このようにして、switch-caseループを含む小さなスクリプトを記述し、エレベータービルドのように、パッケージについて何をするかをさまざまなケースに組み込むことができます。私のスクリプトはありません。あなたは私たちのように頭がいいです-笑ってください。-もちろん、このスクリプトはデーモンのように設定できます(自動的に動作します)。
dschinn1001 2015

1
@Joeが言った:を使用しmake、あなたが言ったように、@ xiaodongjie、makeターゲットは、パッケージ間の依存関係が宣言された結果のパッケージであり、各ターゲットに関連付けられているアクションは、パッケージを作成するコマンドです。 。インストールmake-docして入力info makeし、すべてについて読んでください。
RalphRönnquist15年

1
ビルドプロセスのエイリアスの作成についてはどうですか?
Wilhelm Erasmus

回答:


3

Makefileを使用するには、ビルドの依存関係を次のように宣言します。

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

コマンドのインデントはタブです。

それでMakefile、あなたはコマンドを使うでしょう

make

これにより、すべてのファイルのタイムスタンプに応じて、どのパッケージをどの順序でビルドしてからビルドするかが決まります。たとえば、B.tar.gzタイムスタンプが後である場合B.deb(つまり、パッケージBに新しいソースが含まれている場合)、最初B.debに再構築が行われC.deb、それより後にスタンプが付けC.debられるため、同様に再構築が行われます。


1

まあ、ウィッヒ私は希望だけで、私たち、私は完全にあなたのポイントを逃していますが、それはあなたのようにしている再コンパイルパッケージAを音やパッケージB&Cを再コンパイルしたいのmakefileのために。


詳しく説明していただけますか?
xiaodongjie

または任意の例。
xiaodongjie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.