Abhängigkeitsbaum des Ubuntu-Quellpakets

10

Ich habe einige Pakete. Nennen wir sie A.deb, B.debund C.deb. Jedes Paket hat ein entsprechendes Quellpaket A.dscund A.tar.gz, B.dscund B.tar.gz, C.dscund C.tar.gz. Die Pakete hängen voneinander ab: C.debhängt davon ab B.debund B.debhängt davon abA.deb

Wenn ich etwas ändere A.deb, muss ich es neu erstellen, sonst B.debfunktioniert es nicht. Das gilt auch für B.debund C.deb. Gibt es eine Möglichkeit, diesen Prozess zu automatisieren? Gibt es vielleicht ein Tool oder Skript, das das für mich erledigt? Wenn nicht, wie könnte ich es selbst automatisieren?

Außerdem gibt es nicht meine Pakete.

Xiaodongjie
quelle
2
Sie sagen : „C.deb hängt von B.deb und B.deb auf A.deb hängt“, so dass ich Sie sich beziehen , zu erraten binäre Pakete? Beziehen Sie sich auch auf die Kompilierung von B gegen eine externe Bibliothek in A? Wenn ja, sollte es einfach nicht notwendig sein, das Paket neu zu erstellen, da die Entwickler von A die Schnittstelle einer solchen Bibliothek nicht geändert haben (dies liegt also an den Mantainern von A, nicht an den Mantainern von B). ; Wenn Sie der Entwickler von allen sind, halten Sie einfach die Implementierung von A agnostic so weit wie möglich von seiner Schnittstelle fern, damit die Kompatibilität höchstens gewährleistet ist.)
Kos
1
Ich mache auf Linux kein Zeug auf diesem Niveau, aber ich denke, dafür wurde makees erfunden. Ein Makefile enthält Regeln, die festlegen, was basierend auf den Änderungen neu kompiliert / neu erstellt werden muss.
Joe
1
@xiaodongjie - du bist eine liebe Person mit einer lieben Frage - also kennst du Bash schon und Bash-Scripting? ---> auf diese Weise könnten Sie ein kleines Skript mit Switch-Case-Schleife schreiben und dann wie in einem Aufzug in verschiedene Fälle einbauen, was mit den Paketen zu tun ist. Es gibt nicht mein Skript. Sie sind klug, wie wir klug sind - lachen Sie. - Dieses Skript kann natürlich wie ein Daemon eingerichtet werden (um automatisch zu funktionieren).
dschinn1001
1
Ein @Joe sagte: Verwenden Sie make, und wie Sie selbst sagten, @xiaodongjie, die make-Ziele wären die resultierenden Pakete, deren Paket-zu-Paket-Abhängigkeiten deklariert sind, und die zugehörige Aktion für jedes Ziel wäre der Befehl, der das Paket erstellt . Installieren make-docund tippen Sie info make, um alles darüber zu lesen.
Ralph Rönnquist
1
Was ist mit dem Erstellen eines Alias ​​für den Erstellungsprozess?
Wilhelm Erasmus

Antworten:

3

Sie würden ein Makefile mit den deklarierten Build-Abhängigkeiten verwenden, beispielsweise wie folgt:

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>

Beachten Sie, dass der Befehlseinzug eine TAB ist.

Damit Makefilewürden Sie den Befehl verwenden

make

und dies würde herausfinden, welche Pakete in welcher Reihenfolge erstellt werden sollen, und sie dann erstellen, alles abhängig von den Zeitstempeln der Dateien. Wenn beispielsweise say B.tar.gzeinen Zeitstempel später als hat B.deb(dh das Paket Bhat eine neue Quelle), würde dies dazu führen, dass zuerst B.debneu erstellt wird, und da dies dazu führen würde, dass es später gestempelt wird C.deb, würde dies auch dazu führen C.deb, dass es neu erstellt wird.

Ralph Rönnquist
quelle
1

Nun, vielleicht fehlt mir Ihr Standpunkt völlig, aber es hört sich so an, als würden Sie Paket A neu kompilieren und möchten Pakete B & C neu kompilieren, für die ich uns einfach ein Makefile machen würde .

Karoshi
quelle
Können Sie mehr Details erklären?
xiaodongjie
oder irgendein Beispiel.
Xiaodongjie