แผนผังการพึ่งพาแพ็กเกจซอร์สของ Ubuntu


10

ฉันมีแพ็คเกจ ขอเรียกพวกเขาA.deb, และB.deb C.debแต่ละแพคเกจแพคเกจมีแหล่งที่มาที่สอดคล้องกันA.dscและA.tar.gz, B.dscและB.tar.gz, และC.dsc C.tar.gzแพคเกจขึ้นอยู่กับแต่ละอื่น ๆ : C.debขึ้นอยู่กับB.debและB.debขึ้นอยู่กับA.deb

หากฉันแก้ไขA.debฉันต้องสร้างใหม่มิB.debฉะนั้นจะไม่ทำงาน เดียวกันจะไปสำหรับและB.deb C.debมีวิธีทำให้กระบวนการนี้เป็นแบบอัตโนมัติหรือไม่? อาจมีเครื่องมือหรือสคริปต์ที่จะทำเพื่อฉัน ถ้าไม่ฉันจะทำให้มันเป็นอัตโนมัติได้อย่างไร

นอกจากนี้ยังไม่มีแพ็คเกจของฉัน


2
คุณกำลังพูดว่า "C.deb ขึ้นอยู่กับ B.deb และ B.deb ขึ้นอยู่กับ A.deb" ดังนั้นฉันเดาว่าคุณหมายถึงแพ็คเกจไบนารี ? คุณหมายถึงการรวบรวม B กับไลบรารีภายนอกใน A หรือไม่? หากไม่จำเป็นต้องสร้างแพคเกจใหม่อีกต่อไปเนื่องจากผู้พัฒนา A ไม่ได้เปลี่ยนอินเทอร์เฟซของไลบรารีดังกล่าว (ดังนั้นนี่ขึ้นอยู่กับผู้ดูแลของ A ไม่ใช่ผู้ดูแล B หากคุณเป็นผู้พัฒนาของพวกเขาทั้งหมดแล้วเพียงแค่ทำให้การใช้งานของผู้ไม่เชื่อเรื่องพระเจ้าจากอินเตอร์เฟซของมันให้ได้มากที่สุดเพื่อให้เข้ากันได้ในที่สุดมั่นใจ)
kos

1
ฉันไม่ได้ทำอะไรในระดับนี้บน Linux แต่ฉันคิดว่านั่นเป็นสิ่งที่makeคิดค้นขึ้นมา makefile มีกฎที่กำหนดสิ่งที่จำเป็นต้องคอมไพล์ใหม่ / สร้างใหม่ตามสิ่งที่มีการเปลี่ยนแปลง
Joe

1
@xiaodongjie - คุณเป็นคนที่รักด้วยคำถามที่รัก - คุณรู้แล้วว่าทุบตีแล้วและทุบตีสคริปต์? ---> วิธีนี้คุณสามารถเขียนสคริปเล็ก ๆ น้อย ๆ ด้วย loop-case loop และเหมือนลิฟท์สร้างเป็นกรณีที่แตกต่างกันว่าจะทำอย่างไรกับแพ็คเกจ ไม่มีสคริปต์ของฉัน คุณเป็นคนฉลาดเหมือนเราฉลาด - หัวเราะ - แน่นอนว่าสคริปต์นี้สามารถตั้งค่าได้เหมือน daemon (เพื่อทำงานโดยอัตโนมัติ)
dschinn1001

1
@Joe พูดว่า: ใช้makeและตามที่คุณพูดด้วยตัวคุณเอง @xiaodongjie เป้าหมายการสร้างจะเป็นแพ็กเกจที่เป็นผลลัพธ์โดยมีการประกาศการพึ่งพาแพ็กเกจต่อแพ็กเกจและการดำเนินการที่เกี่ยวข้องสำหรับแต่ละเป้าหมายจะเป็นคำสั่งที่ทำให้แพ็กเกจ . ติดตั้งmake-docและพิมพ์info makeเพื่ออ่านข้อมูลทั้งหมด
Ralph Rönnquist

1
สิ่งที่เกี่ยวกับการสร้างนามแฝงสำหรับกระบวนการสร้าง?
Wilhelm Erasmus

คำตอบ:


3

คุณจะใช้ Makefile ด้วยการสร้างการอ้างอิงที่ประกาศตัวอย่างเช่น:

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>

โปรดทราบว่าการเยื้องคำสั่งคือ TAB

ด้วยสิ่งMakefileนั้นคุณจะใช้คำสั่ง

make

และสิ่งนี้จะทำงานออกแพคเกจที่จะสร้างและในลำดับที่แล้วสร้างพวกเขาทั้งหมดขึ้นอยู่กับการประทับเวลาของไฟล์ เช่นถ้าบอกว่าB.tar.gzมีการประทับเวลาช้ากว่าB.deb(เช่นแพ็คเกจBมีแหล่งที่มาใหม่) จากนั้นจะทำให้เกิดB.debการสร้างใหม่ในตอนแรกและการที่จะทำให้มันถูกประทับตราช้ากว่าC.debก็จะทำให้เกิดC.debการสร้างขึ้นมาใหม่เช่นกัน


1

บางทีฉันอาจพลาดจุดสำคัญของคุณไปเลย แต่ดูเหมือนว่าคุณกำลังคอมไพล์แพ็กเกจ A ใหม่และต้องการคอมไพล์แพ็กเกจ B & C อีกครั้งฉันจะใช้makefileแทน


คุณช่วยอธิบายรายละเอียดเพิ่มเติมได้ไหม?
xiaodongjie

หรือตัวอย่างใด ๆ
xiaodongjie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.