วิธีสร้างเมตาแพ็คเกจที่ติดตั้งแพ็คเกจอื่นโดยอัตโนมัติ


54

ฉันต้องการสร้างแพคเกจที่ไม่มีรหัสหรือโปรแกรมใด ๆ แต่ติดตั้งแพ็คเกจอื่น ๆ ที่มีอยู่ในที่เก็บลงบนคอมพิวเตอร์แทนวิธีที่ubuntu-restricted-extrasแพ็คเกจทำ

คำตอบ:


47

เมตาแพคเกจเช่นนี้สามารถสร้างขึ้นด้วยเครื่องมือที่เรียกว่าequivs ซึ่งจะสร้างแพคเกจที่มีเพียงข้อมูลการพึ่งพา

ก่อนอื่นให้สร้างไดเรกทอรี:

mkdir my-metapackage
cd my-metapackage/

ตอนนี้รันโปรแกรม:

equivs-control ns-control

มันจะสร้างไฟล์ชื่อns-controlเปิดไฟล์นี้ด้วยโปรแกรมแก้ไขข้อความของคุณ ไฟล์ควบคุมที่คุณสร้างควรมีการดัดแปลงDependsหรือขึ้นRecommendsบรรทัดใหม่เพื่อให้ขึ้นกับแพ็คเกจที่คุณต้องการติดตั้ง:

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(เป็นเพียงตัวอย่างคุณควรมีข้อมูลเพิ่มเติม)

และสุดท้ายสร้างแพ็คเกจด้วยการรัน

equivs-build ns-control

my-metapackage/my-metapackage_1.0_all.debแพคเกจของคุณตั้งอยู่ที่

หากคุณต้องการที่จะยังสร้างแพคเกจที่มาที่--fullตัวเลือกที่สามารถส่งผ่านไปเช่นequivs-build equivs-build --full ns-controlสิ่งนี้จะใช้ debuild และสร้างไฟล์. dsc & .tar.gz

หากต้องการสร้างไฟล์. changes ต้นทางที่คุณสามารถอัปโหลดไปยัง PPA ให้คลายบีบอัดและสร้างแพ็คเกจซอร์สด้วย

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

หากผู้ดูแลที่คุณตั้งค่าใน ns-control ตรงกับคีย์ GPG ของคุณควรสร้างและลงชื่อไฟล์ my-metapackage_1.0_source.changes


ขอบคุณมาก. ฉันจะทดสอบในภายหลังส่วนใหญ่ แต่จนถึงตอนนี้คำแนะนำใช้งานได้ :)
โธมัสวอร์ด

2
มันทำงานได้อย่างสมบูรณ์แบบ!
Stefano Palazzo

ขอบคุณสำหรับคำตอบ ajmitch แต่เพียงเพราะเหตุผลฉัน "จะชี้ให้เห็นว่าถ้าคุณมี~/.devscriptsไฟล์และกำหนดคีย์ GPG ที่แตกต่างกันเพื่อใช้ในไฟล์ devscripts โดยเฉพาะมันจะเอาชนะกระบวนการ dpkg / debuild ใช้คีย์ GPG เฉพาะที่ระบุไว้ใน.devscriptsเช่นเดียวกับจุดที่น่าจดจำสำหรับประโยคสุดท้ายในคำตอบของคุณ..
โทมัสวอร์ด

ฉันสังเกตเห็นว่าการวางแพ็คเกจภายใต้Depends:ทำให้การติดตั้งนั้นดีถ้าหากมีแพ็คเกจอยู่เท่านั้น มันไม่ติดตั้งพวกเขาหากพวกเขาไม่ได้อยู่ในเครื่องของฉัน ในการติดตั้งพวกเขาฉันใช้Providesแทนและมันทำงานได้อย่างมีเสน่ห์ ดูรหัสของฉัน (เพิ่งเปลี่ยน): github.com/palladius/debian-packages/blob/master/ …
Riccardo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.