Pohon dependensi paket sumber Ubuntu

10

Saya punya beberapa paket. Sebut saja mereka A.deb, B.debdan C.deb. Setiap paket memiliki paket sumber yang sesuai A.dscdan A.tar.gz, B.dscdan B.tar.gz, C.dscdan C.tar.gz. Paket tergantung satu sama lain: C.debtergantung B.debdan B.debtergantungA.deb

Jika saya memodifikasi A.deb, saya perlu membangun kembali B.debatau tidak akan berfungsi. Hal yang sama berlaku untuk B.debdan C.deb. Apakah ada cara untuk mengotomatisasi proses ini? Apakah mungkin ada alat atau skrip yang akan melakukannya untuk saya? Jika tidak, bagaimana saya bisa mengotomatisasi sendiri?

Selain itu, Tidak ada paket saya.

Xiaodongjie
sumber
2
Anda mengatakan "C.deb tergantung pada B.deb dan B.deb tergantung pada A.deb", jadi saya kira Anda merujuk ke paket biner ? Anda juga merujuk pada kompilasi B terhadap perpustakaan eksternal di A? Jika demikian, seharusnya tidak perlu membangun kembali paket, mengingat bahwa pengembang A tidak mengubah antarmuka pustaka tersebut (jadi ini terserah mantainer A, bukan ke mantainer B) ; jika Anda adalah pengembang dari semuanya maka hanya cukup menjaga implementasi A agnostik dari antarmuka semaksimal mungkin, sehingga kompatibilitas dalam memastikan paling banyak).
kos
1
Saya tidak melakukan hal-hal pada tingkat ini di Linux, tetapi saya pikir itulah yang makediciptakan untuk. Makefile termasuk aturan yang menentukan apa yang perlu dikompilasi ulang / dibangun kembali berdasarkan apa yang telah berubah.
Joe
1
@xiaodongjie - Anda adalah orang yang sayang dengan pertanyaan sayang - jadi Anda sudah tahu bash dan scripting bash? ---> dengan cara ini Anda bisa menulis skrip kecil dengan switch-case loop dan kemudian seperti di lift membangun ke kasus yang berbeda apa yang harus dilakukan tentang paket. Tidak ada skrip saya. Anda cerdas seperti kita cerdas - tertawa. - skrip ini tentu saja dapat diatur seperti daemon (untuk bekerja secara otomatis).
dschinn1001
1
A @ Jo berkata: gunakan make, dan seperti yang Anda katakan sendiri, @xiaodongjie, target make akan menjadi paket yang dihasilkan, dengan dependensi paket-ke-paket mereka diumumkan, dan tindakan terkait untuk setiap target adalah perintah yang membuat paket tersebut . Instal make-docdan ketik info makeuntuk membaca semua tentang itu.
Ralph Rönnquist
1
Bagaimana dengan membuat alias untuk proses pembuatan?
Wilhelm Erasmus

Jawaban:

3

Anda akan menggunakan Makefile dengan dependensi build yang dideklarasikan, misalnya sebagai berikut:

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>

Perhatikan bahwa lekukan perintah adalah TAB.

Dengan itu Makefile, Anda akan menggunakan perintah

make

dan ini akan menentukan paket mana yang akan dibuat dan dalam urutan apa, dan kemudian membangunnya, semua tergantung pada cap waktu file. Misalnya, jika say B.tar.gzmemiliki stempel waktu lebih lama dari B.deb(mis. Paket Bmemiliki sumber baru), maka itu akan menyebabkan pertama B.debdibangun kembali, dan karena itu akan membuatnya dicap lebih lambat dari C.debitu, itu akan menyebabkan C.debdibangun kembali juga.

Ralph Rönnquist
sumber
1

Yah, mungkin saya benar-benar kehilangan maksud Anda, tapi sepertinya Anda mengkompilasi ulang paket A dan ingin mengkompilasi ulang paket B & C, yang saya hanya ingin membuat makefile untuk kami.

karoshi
sumber
Bisakah Anda menjelaskan lebih detail?
xiaodongjie
atau contoh apa saja.
xiaodongjie