วิธีการให้บรรจุภัณฑ์ Debian สร้างสองแพคเกจที่ได้รับแหล่งเก็บถาวร upstream?


14

ฉันกำลังทำบรรจุภัณฑ์สำหรับ PPA ของฉัน ซอร์สอัพสตรีมคือ.tar.gzไฟล์เก็บถาวรซึ่งใช้ไฟล์ Makefile

เนื่องจากแพ็กเกจนี้มีข้อมูลจำนวนมากที่ไม่ขึ้นกับสถาปัตยกรรมจึงควรมีสคริปต์บิลด์สร้างสองแพ็คเกจ:

  • บรรจุภัณฑ์
  • แพคเกจ -ข้อมูล

ฉันจะตั้งค่านี้ได้อย่างไร ฉันได้แก้ไขcontrolไฟล์Debian ของฉันเพื่อสร้างสองแพ็คเกจ แต่ฉันไม่ทราบวิธีรับไฟล์ที่ถูกต้องไปยังแพ็คเกจที่เหมาะสม

เนื่องจากปัจจุบันไฟล์ข้อมูลทั้งหมดได้รับการติดตั้งผ่านทาง Makefile ฉันจึงหลงทางที่นี่

คำตอบ:


14

นี่คือสถานที่ที่ฉันพบเอกสารขาดอยู่เสมอ ฉันเรียนรู้ว่ามันใช้งานได้อย่างไรโดยดูจากวิธีการใช้ในแพ็คเกจอื่น ๆ เช่นเดียวกับสิ่งต่าง ๆ ในบรรจุภัณฑ์เดเบียนมีหลายวิธีในการทำเช่นนี้ ฉันพบวิธีที่ง่ายที่สุดคือการใช้debian/package.installไฟล์ นี่คือตัวอย่างของแพคเกจที่ผมเคยทำงานในการจินตนาการ (สาขา bzr)

debian/controlอันดับแรกเราต้องสร้างแพคเกจใน ตอนนี้มีสามบท หนึ่งชุดสำหรับแพ็คเกจต้นทางและอีกชุดสำหรับแพ็คเกจไบนารีแต่ละชุด โปรดทราบว่าแพคเกจ foo Architecture: allข้อมูลที่ควรจะเป็น imagination-common (= ${source:Version})นอกจากนี้ยังทราบว่าจินตนาการขึ้นอยู่กับ

ต่อไปเราจะสร้างdebian/imagination.installไฟล์ สิ่งนี้มีไฟล์หรือพา ธ เฉพาะที่เราต้องการจบลงในแพ็คเกจจินตนาการ สำหรับแพ็คเกจนี้เราต้องการไฟล์ที่ขึ้นกับสถาปัตยกรรมทั้งหมด ไฟล์เดสก์ท็อปรวมอยู่ในขณะที่จำเป็นต้องพูดกับไบนารีที่เรียกใช้ในExec:บรรทัด

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

เราจำเป็นต้องสร้างdebian/imagination-common.installไฟล์ สิ่งนี้จะมีไฟล์อิสระภาพสถาปัตยกรรมการแปลเอกสารและสิ่งที่คล้ายกันทั้งหมด

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install อธิบายสิ่งที่เกิดขึ้นจริงที่นี่:

บางทีคุณอาจมีแพคเกจขนาดใหญ่ที่สร้างหลายแพ็คเกจไบนารี คุณสามารถใช้ upfile Makefile เพื่อติดตั้งทั้งหมดลงใน debian / tmp แล้วใช้ dh_install เพื่อคัดลอกไดเรกทอรีและไฟล์จากที่นั่นไปยังไดเรกทอรีสร้างแพ็คเกจที่เหมาะสม

ความหมายโดย "ไดเรกทอรีสร้างแพ็คเกจที่ถูกต้อง" ก็คือในตอนท้ายของกระบวนการสร้างทุกสิ่งที่อยู่ในผลลัพธ์foo.debจะพบsrc/debian/fooได้ แฟ้มที่จะสิ้นสุดในจะพบในfoo-data.deb src/debian/foo-dataโดยdebian/rulesพื้นฐานแล้วเป็นเพียง Makefile คุณสามารถเริ่มจินตนาการได้ว่าวิธีอื่น ๆ ในการรับผลลัพธ์เดียวกัน


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