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.


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.


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 .


Pouvez-vous expliquer plus en détail?
xiaodongjie

ou tout autre exemple.
xiaodongjie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.