Albero delle dipendenze del pacchetto sorgente Ubuntu


10

Ho dei pacchi. Chiamiamoli così A.deb, B.debe C.deb. Ogni pacchetto ha un pacchetto sorgente corrispondente A.dsce A.tar.gz, B.dsce B.tar.gz, C.dsce C.tar.gz. I pacchetti dipendono l'uno dall'altro: C.debdipende B.debe B.debdipende daA.deb

Se modifico A.deb, devo ricostruire B.debo non funzionerà. Lo stesso vale per B.debe C.deb. C'è un modo per automatizzare questo processo? C'è forse uno strumento o una sceneggiatura che lo farà per me? In caso contrario, come potrei automatizzarlo da solo?

Inoltre, non ci sono i miei pacchetti.


2
Stai dicendo "C.deb dipende da B.deb e B.deb dipende da A.deb", quindi immagino ti riferisci ai pacchetti binari ? Ti riferisci anche alla compilazione di B su una libreria esterna in A? Se è così, semplicemente non dovrebbe esserci la necessità di ricostruire il pacchetto, dato che gli sviluppatori di A non hanno modificato l'interfaccia di tale libreria (quindi dipende dal mantainer (s) di A, non dal mantainer (s) di B ; se sei lo sviluppatore di tutti loro, ti basterà semplicemente mantenere l'implementazione di A agnostico dalla sua interfaccia il più possibile, in modo che la compatibilità sia assicurata al massimo).
kos,

1
Non faccio cose a questo livello su Linux, ma penso che sia stato quello per cui è makestato inventato. Un makefile include regole che determinano ciò che deve essere ricompilato / ricostruito in base a ciò che è cambiato.
Joe,

1
@xiaodongjie - sei una persona cara con una cara domanda - quindi conosci già bash e bash-scripting? ---> in questo modo potresti scrivere un piccolo script con il loop switch-case e poi, come in un ascensore, creare in diversi casi cosa fare con i pacchetti. Non c'è la mia sceneggiatura. Sei intelligente come noi siamo intelligenti: ridi. - questo script può ovviamente essere impostato come un demone (per funzionare automaticamente).
dschinn1001,

1
Un @Joe ha detto: usa make, e come hai detto tu stesso, @xiaodongjie, i target di make sarebbero i pacchetti risultanti, con le loro dipendenze da pacchetto a pacchetto dichiarate, e l'azione associata per ogni target sarebbe il comando che rende il pacchetto . Installa make-doce digita info makeper leggere tutto al riguardo.
Ralph Rönnquist,

1
Che ne dici di creare un alias per il processo di compilazione?
Wilhelm Erasmus,

Risposte:


3

Dovresti usare un Makefile con le dipendenze di build dichiarate, ad esempio come segue:

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>

Si noti che il rientro del comando è una TAB.

Con quello Makefile, useresti il ​​comando

make

e questo capirebbe quali pacchetti costruire e in quale ordine, e poi li costruirà, tutto a seconda dei timestamp dei file. Ad esempio, se dire B.tar.gzha un timestamp più tardi di B.deb(cioè il pacchetto Bha una nuova fonte), ciò causerebbe in primo luogo la B.debricostruzione, e poiché ciò lo farebbe timbrare più tardi C.deb, causerebbe C.debanche la ricostruzione.


1

Bene, forse mi manca del tutto il tuo punto, ma sembra che tu stia ricompilando il pacchetto A e voglia ricompilare i pacchetti B e C, per i quali vorrei semplicemente farci un makefile .


Puoi spiegare più in dettaglio?
xiaodongjie,

o qualsiasi esempio.
xiaodongjie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.