Drzewo zależności pakietu źródłowego Ubuntu

10

Mam paczki. Nazwijmy je A.deb, B.debi C.deb. Każdy pakiet ma odpowiedni pakiet źródłowy A.dscoraz A.tar.gz, B.dsci B.tar.gz, C.dsci C.tar.gz. Pakiety zależą od siebie: C.debzależy od B.debi B.debzależy odA.deb

Jeśli zmodyfikuję A.deb, muszę odbudować, B.debbo inaczej to nie zadziała. To samo dotyczy B.debi C.deb. Czy istnieje sposób na zautomatyzowanie tego procesu? Czy może jest jakieś narzędzie lub skrypt, który zrobi to za mnie? Jeśli nie, jak mogę to zautomatyzować?

Ponadto nie ma moich paczek.

xiaodongjie
źródło
2
Mówisz „C.deb zależy od B.deb i B.deb zależy od A.deb”, więc myślę, że masz na myśli pakiety binarne ? Czy odnosisz się także do kompilacji B względem biblioteki zewnętrznej w A? Jeśli tak, po prostu nie powinno być potrzeby przebudowywania pakietu, biorąc pod uwagę, że twórcy A nie zmienili takiego interfejsu biblioteki (więc zależy to od mantainera (ów) A, a nie od mantainera (ów) B ; jeśli jesteś programistą wszystkich z nich, po prostu trzymaj implementację agnostyka A ​​z jego interfejsu w jak największym stopniu, aby zapewnić maksymalną kompatybilność).
Kos
1
Nie robię rzeczy na tym poziomie w Linuksie, ale myślę, że właśnie po to makewymyślono. Makefile zawiera reguły określające, co należy ponownie skompilować / przebudować na podstawie tego, co się zmieniło.
Joe
1
@xiaodongjie - jesteś drogą osobą z drogim pytaniem - więc wiesz już bash i bash-scripting? ---> w ten sposób możesz napisać mały skrypt z zapętleniem skrzynki przełączników, a następnie, jak w windzie, wbudować w różne przypadki, co zrobić z pakietami. Nie ma mojego skryptu. Jesteś bystry jak my bystry - śmiej się. - ten skrypt można oczywiście skonfigurować jako demona (działający automatycznie).
dschinn1001,
1
@Joe powiedział: użyj make, a jak sam powiedziałeś, @xiaodongjie, make target będzie pakietem wynikowym z zadeklarowanymi zależnościami między pakietami, a powiązaną akcją dla każdego celu będzie polecenie, które tworzy pakiet . Zainstaluj make-doci wpisz, info makeaby przeczytać o tym wszystko.
Ralph Rönnquist,
1
Co z utworzeniem aliasu dla procesu kompilacji?
Wilhelm Erasmus,

Odpowiedzi:

3

Można użyć pliku Makefile z zadeklarowanymi zależnościami kompilacji, na przykład w następujący sposób:

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>

Zauważ, że wcięcie polecenia to TAB.

Dzięki temu Makefileużyjesz polecenia

make

i to obliczy, które pakiety zbudować i w jakiej kolejności, a następnie skompilować je, wszystko w zależności od znaczników czasu plików. Np. Jeśli powiedzmy, że B.tar.gzma znacznik czasu później niż B.deb(tzn. Pakiet Bma nowe źródło), to najpierw spowodowałoby B.debto przebudowę, a ponieważ spowodowałoby to znaczek później C.deb, to również spowodowałoby C.debprzebudowę.

Ralph Rönnquist
źródło
1

Cóż, może zupełnie nie rozumiem tego, ale brzmi to tak, jakbyś rekompilował pakiet A i chciałbyś ponownie skompilować pakiety B i C, dla których po prostu byłby dla nas makefile .

karoshi
źródło
Czy możesz wyjaśnić więcej szczegółów?
xiaodongjie,
lub dowolny przykład.
xiaodongjie,