Ubuntu kaynak paket bağımlılığı ağacı


10

Bazı paketlerim var. Onları diyelim A.deb, B.debve C.deb. Her paketin karşılık gelen bir kaynak paketi vardır A.dscve A.tar.gz, B.dscve B.tar.gz, C.dscve C.tar.gz. Paketler birbirine C.debbağlıdır : bağlıdır B.debve B.debbağlıdırA.deb

Değiştirirsem A.deb, yeniden inşa etmem gerekir, B.debaksi takdirde çalışmaz. Aynı şey B.debve için de geçerlidir C.deb. Bu süreci otomatikleştirmenin bir yolu var mı? Benim için yapacak bir araç veya senaryo var mı? Değilse, kendim nasıl otomatikleştirebilirim?

Buna ek olarak, Paketlerim yok.


2
"C.deb, B.deb'ye ve B.deb A.deb'ye bağlıdır" diyorsunuz, yani sanırım ikili paketlerden bahsediyorsunuz ? Ayrıca B'nin A'daki harici bir kütüphaneye karşı derlenmesinden mi bahsediyorsunuz? Eğer öyleyse , A'nın geliştiricilerinin böyle bir kütüphanenin arayüzünü değiştirmediği göz önüne alındığında, paketi yeniden oluşturma ihtiyacı olmamalıdır (bu nedenle bu, A'nın mantainer'lerine bağlıdır, B'nin mantainer'lerine değil) Eğer hepsinin geliştiricisiyseniz, o zaman sadece bir agnostik uygulamasını kendi arayüzünden mümkün olduğunca tutun, böylece uyumluluk en iyi şekilde sağlanır).
kos

1
Linux'ta bu düzeyde bir şey yapmıyorum, ama bunun makeiçin icat edildiğini düşünüyorum . Bir makefile, neyin değiştiğine göre yeniden derlenmesi / yeniden oluşturulması gerektiğini belirleyen kurallar içerir.
Joe

1
@xiaodongjie - sevgili bir sorusu olan sevgili bir insansınız - yani bash'ı zaten biliyorsunuz ve bash komut dosyası? ---> Bu şekilde anahtar kutusu döngüsü ile küçük bir komut dosyası yazabilir ve daha sonra bir asansör gibi paketler hakkında ne yapacağını farklı durumlarda inşa edebilirsiniz. Senaryom yok. Zeki olduğumuz gibi zekisiniz, gülün. - Bu komut dosyası elbette bir daemon gibi kurulabilir (otomatik olarak çalışmak için).
dschinn1001

1
A @Joe şunları söyledi: kullanın makeve kendiniz söylediğiniz gibi @ xiaodongjie, hedefleri paketten pakete bağımlılıkları beyan edilen sonuçlanan paketler olacak ve her bir hedef için ilişkili eylem, paketi yapan komut olacaktır. . Her şeyi okumak için yükleyin make-docve yazın info make.
Ralph Rönnquist

1
Derleme işlemi için bir takma ad oluşturmaya ne dersiniz?
Wilhelm Erasmus

Yanıtlar:


3

Aşağıda belirtilen derleme bağımlılıklarıyla Makefile kullanırsınız:

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>

Komut girintisinin bir SEKME olduğunu unutmayın.

Bununla birlikte Makefile, komutunu

make

ve bu, dosyaların paket damgalarına bağlı olarak hangi paketlerin ve hangi sırayla yapılacağını ve sonra da yapılacağını belirler. Örneğin, diyelim B.tar.gzdaha sonra bir zaman damgasına sahipse B.deb(yani paket Byeni bir kaynağa sahipse), o zaman ilk B.debönce yeniden inşa edilmesine neden olur ve bu da daha sonradan damgalanmasına C.debneden olur, bu C.debda yeniden oluşturulmasına neden olur .


1

Belki de tamamen anlamını yitiriyorum, ama A paketini yeniden derliyor ve B & C paketlerini yeniden derlemek istiyormuşsunuz gibi, sadece bize bir makefile yapacağım .


Daha fazla ayrıntı açıklayabilir misiniz?
xiaodongjie

veya herhangi bir örnek.
xiaodongjie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.