จะสร้างและจัดการ PPAs หลายสถาปัตยกรรมได้อย่างไร


13

ฉันมีโปรแกรมที่จำเป็นต้องคอมไพล์ใหม่สำหรับอูบุนตูทุกรุ่น

ขณะนี้ฉันกำลังใช้ PPA ของ Ubuntu สำหรับการจัดจำหน่ายในปัจจุบัน

ในที่สุดฉันต้องจัดทำแพ็คเกจสำหรับ Ubuntu รุ่นก่อนหน้า

ฉันไม่แน่ใจว่าจะทำสิ่งนี้ได้อย่างไร

เซิร์ฟเวอร์ build PPA ของ Ubuntu ทำงานอย่างไร - เพียงแค่ดูที่ฟิลด์การแจกจ่ายในรายการการเปลี่ยนแปลงล่าสุด (ในไฟล์ debian / changelog) เพื่อพิจารณาว่าแพ็คเกจใดที่ควรสร้าง

ข้อกำหนดเดเบียนอนุญาตให้เพิ่มการแจกแจงแบบหลายค่าลงในฟิลด์การกระจาย แต่นี่ไม่ได้ตะเข็บเพื่อช่วยฉัน

เอกสารบางอย่างของอูบุนตูพูดถึงการเข้ารหัสชื่อการแจกจ่ายลงในหมายเลขเวอร์ชั่น (ในไฟล์ changerog)

แต่วิธีนี้ใช้งานได้จริง มีโปรแกรมเวอร์ชั่นใหม่แล้วอะไรนะ? ฉันจะเพิ่มรายการเปลี่ยนแปลงใหม่แต่ละรายการและ PPA buildserver สร้างโดยอัตโนมัติสำหรับแต่ละแพคเกจใหม่กระจายหลังจาก dput'ing ขึ้นหรือไม่ หรือ PPA buildserver ดูที่รายการการเปลี่ยนแปลงแรกหรือไม่


1
ฉันสนใจกระบวนการนี้ด้วย!
Marco Ceppi

คำตอบ:


7

วิธีที่จะไปคือการอัปโหลดหนึ่งครั้งสำหรับทุกรุ่นของUbuntu

Launchpad จะไม่สร้างแพ็คเกจสำหรับ Ubuntu รุ่นที่ไม่รองรับอีกต่อไปและสร้างแพ็คเกจสำหรับ Ubuntu หนึ่งรุ่นเท่านั้น รุ่นเป้าหมายคือ (ตามที่คุณรู้อยู่แล้ว) ระบุไว้ในchangelogไฟล์โดยรายการใหม่ล่าสุด!

อย่าลืมว่าแพ็กเกจที่โปรแกรมของคุณขึ้นอยู่อาจไม่พร้อมใช้งานในเวอร์ชันเดียวกันในทุกเวอร์ชั่นของ Ubuntu

คุณยังพูดถึง "multi-architecture" (architecture = CUP type เช่น. x86, LPIA, AMD64) สิ่งนี้ไม่สร้างความแตกต่างเนื่องจากทุกแพ็คเกจที่อัพโหลดถูกสร้างขึ้นสำหรับสถาปัตยกรรมที่มีอยู่ตราบใดที่คุณมีArchitecture: anyในไฟล์ package definition ( debian/control) สิ่งนี้ยังช่วยให้คุณสามารถสร้างแพคเกจขึ้นอยู่กับแพคเกจที่แตกต่างกันสำหรับสถาปัตยกรรมที่แตกต่างกัน (จะกำหนดแพคเกจมากกว่าหนึ่งครั้ง)


10

Launchpad มีคุณสมบัติใหม่ในรุ่นเบต้าซึ่งช่วยให้คุณสร้างแพ็คเกจของคุณสำหรับอูบุนตูหลายรุ่นพร้อมกันโดยไม่มีการทำงานพิเศษใด ๆ คุณสามารถสร้างแพ็คเกจของคุณได้โดยอัตโนมัติทุกวัน https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted ข้อความแสดงแทน


1
นั่นฟังดูน่าสนใจ ฉันไม่สามารถใช้งานได้โดยตรงเนื่องจากฉันไม่ได้ใช้ bzr หรือ launchpad สำหรับการโฮสต์พื้นที่เก็บข้อมูล (ฉันใช้ Mercurial) แต่! อาจเป็นไปได้ที่จะสร้าง bzr Repository ที่ launchpad และดัมพ์ชุดการเปลี่ยนแปลงล่าสุดจากที่เก็บหลักของฉันในนั้นทุกครั้งที่ฉันต้องการทริกเกอร์การสร้างแพ็คเกจใหม่
maxschlepzig

ฉันไม่ได้เขียนโค้ดทุกอย่างบ่อยและฉันก็ตื่นเต้นกับสิ่งนี้
aperson

@maxschlepzig ตั้งคำถามแยกต่างหากเกี่ยวกับวิธีนำเข้าข้อมูล Hg ของคุณไปยัง Launchpad และฉันจะตอบคำถาม
Jorge Castro

6

เกี่ยวกับอนุสัญญาการตั้งชื่อมาตรฐานคือการทำสิ่งนี้:

  • 1.0-0ubuntu1 สำหรับแพ็คเกจที่ลงท้ายด้วยไฟล์เก็บถาวรอย่างเป็นทางการของ Ubuntu
  • 1.0-0ubuntu1 ~ lucidppa1 สำหรับเวอร์ชั่นของแพ็คเกจที่คุณใส่ใน PPA สำหรับ lucid
  • 1.0-0ubuntu1 ~ karmicppa1 สำหรับเวอร์ชั่นของแพ็คเกจนั้นสำหรับ Karmic

สาเหตุคือ ~ ในฟิลด์เวอร์ชันแสดงถึง "น้อยกว่าไม่มีอะไร" สำหรับหมายเลขเวอร์ชัน ดังนั้นหากมีคนเพิ่ม PPA ของคุณที่ Karmic พวกเขาจะได้รับแพ็คเกจ ~ karmicppa1 เมื่อพวกเขาอัพเกรดเป็น Lucid (และอ่าน PPA ของคุณ) มันจะถูกแทนที่ด้วยแพ็คเกจ Lucid PPA หากแพ็กเกจของคุณได้รับการจัดเก็บอย่างเป็นทางการแล้วการเปลี่ยนจาก PPA ของคุณจะเป็นไปอย่างราบรื่น

ข้อดีอีกประการคือการวางการวางจำหน่ายในฟิลด์เวอร์ชันทำให้ชัดเจนว่าไฟล์ที่นำไปใช้กับการปล่อย (และเตือนให้คุณอัปโหลดหนึ่งรายการต่อการปล่อย) คุณอาจต้องการกิ่งต่าง ๆ สำหรับแต่ละรุ่นของ Ubuntu เมื่อคุณมีการอ้างอิงที่แตกต่างกันเช่น


Scott - มีเอกสารบางอย่างเกี่ยวกับเรื่องนี้หรือไม่?
Bartosz Radaczyński

ข้อความ ~ และอาจมีป้ายกำกับอยู่ที่ไหนซักแห่งที่คลุมเครือ ส่วนที่เหลือเป็นเพียงการประชุมที่ฉันได้สังเกตเห็นในหมู่นักพัฒนาอื่น ๆ ไม่ใช่การฝึกฝนที่เป็นทางการ
Scott Ritchie

ตกลงขอบคุณแบบแผนการตั้งชื่อที่คุณแนะนำนั้นทำงานได้ดี
Bartosz Radaczyński

ฉันควรเพิ่มว่าบางครั้งสิ่งนี้จะขยายเพิ่มเติมเพื่อวางเพิ่มเติม ~ ก่อน ppa: 1.0-0ubuntu1 ~ karmic1 ~ ppa1 เหตุผลของเรื่องนี้ก็คือการปรับปรุงการปล่อยเสถียรอย่างเป็นทางการเป็น Karmic อาจได้รับการปล่อยตัวเป็น 1.0-0ubuntu1 ~ karmic1 และเรา ต้องการเวอร์ชั่น PPA ให้น้อยกว่านั้น
Scott Ritchie

ต้องถามใน #launchpad บน Freenode และเห็นได้ชัดนี้เป็นกึ่งเอกสารบน LaunchPad วิกิพีเดียภายใต้การสร้างแพคเกจที่มา ขอบคุณสำหรับข้อมูลเกี่ยวกับอนุสัญญานี้มันมีประโยชน์มาก ^ _ ^
TrinitronX
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.