Arbre de dépendance du paquet source Ubuntu

10

J'ai quelques paquets. Appelons-les A.deb, B.debet C.deb. Chaque paquet a un paquet source correspondant A.dscet A.tar.gz, B.dscet B.tar.gz, C.dscet C.tar.gz. Les packages dépendent les uns des autres: C.debdépend B.debet B.debdépend deA.deb

Si je modifie A.deb, je dois reconstruire B.debou cela ne fonctionnera pas. Il en va de même pour B.debet C.deb. Existe-t-il un moyen d'automatiser ce processus? Y a-t-il peut-être un outil ou un script qui le fera pour moi? Sinon, comment pourrais-je l'automatiser moi-même?

De plus, il n'y a pas mes packages.

xiaodongjie
la source
2
Vous dites "C.deb dépend de B.deb et B.deb dépend de A.deb", donc je suppose que vous faites référence aux packages binaires ? Parlez-vous également de la compilation de B par rapport à une bibliothèque externe dans A? Si c'est le cas, il ne devrait tout simplement pas être nécessaire de reconstruire le package, étant donné que le (s) développeur (s) de A n'a pas changé l'interface de cette bibliothèque (c'est donc au (x) mantainer (s) de A, pas aux mantainer (s) de B ; si vous êtes le développeur de chacun d'eux, il vous suffit de conserver le plus possible l'implémentation de A agnostic depuis son interface, afin que la compatibilité soit au mieux assurée).
kos
1
Je ne fais pas de truc à ce niveau sous Linux, mais je pense que c'est pour ça qu'on makea inventé. Un makefile comprend des règles qui déterminent ce qui doit être recompilé / reconstruit en fonction de ce qui a changé.
Joe
1
@xiaodongjie - vous êtes une personne chère avec une question chère - donc vous connaissez déjà bash et bash-scripting? ---> de cette façon, vous pouvez écrire un petit script avec une boucle switch-case et ensuite, comme dans un ascenseur, construire dans différents cas, que faire des packages. Il n'y a pas mon script. Vous êtes intelligent comme nous sommes intelligent - riez. - ce script peut bien sûr être configuré comme un démon (pour fonctionner automatiquement).
dschinn1001
1
Un @Joe a dit: utilisez make, et comme vous l'avez dit vous-même, @xiaodongjie, les cibles de création seraient les packages résultants, avec leurs dépendances de package à package déclarées, et l'action associée pour chaque cible serait la commande qui rend le package . Installez make-docet tapez info makepour tout savoir.
Ralph Rönnquist
1
Qu'en est-il de la création d'un alias pour le processus de génération?
Wilhelm Erasmus

Réponses:

3

Vous utiliseriez un Makefile avec les dépendances de génération déclarées, par exemple comme suit:

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>

Notez que l'indentation de commande est un TAB.

Avec cela Makefile, vous utiliseriez la commande

make

et cela déterminerait les packages à construire et dans quel ordre, puis les générer, tous en fonction des horodatages des fichiers. Par exemple, si say B.tar.gza un horodatage plus tard que B.deb(c.-à-d. BQue le paquet a une nouvelle source), cela entraînerait d'abord B.debla reconstruction, et comme cela le ferait estampiller plus tard que C.deb, cela entraînerait C.debégalement la reconstruction.

Ralph Rönnquist
la source
1

Eh bien, je manque peut-être totalement votre point, mais il semble que vous recompiliez le package A et que vous vouliez recompiler les packages B & C, pour lesquels je voudrais simplement nous créer un makefile .

karoshi
la source
Pouvez-vous expliquer plus en détail?
xiaodongjie
ou tout autre exemple.
xiaodongjie