ฉันจะสร้าง PPA สำหรับโปรแกรมทำงานได้อย่างไร


36

สมมติว่าฉันมีแอปพลิเคชันที่ใช้งานได้เขียนด้วย C, C ++ หรือ Python ฉันต้องการสร้าง Launchpad PPA เพื่อให้ผู้อื่นสามารถติดตั้งได้จากแพ็คเกจ โปรดให้คำแนะนำทีละขั้นตอนสำหรับการทำสิ่งนี้ตั้งแต่ต้นจนจบ (หรือระบุลิงก์ที่ทำเช่นเดียวกัน)

  • ภาษาการเขียนโปรแกรมสำคัญหรือไม่ (มันเป็นสคริปต์ทุบตีได้หรือไม่)
  • ฉันต้องเพิ่มอะไรในงานสร้างของฉันหรือไม่?
  • บิวด์ควรติดตั้งตัวเองที่ใด
  • ฉันจะกำหนดการพึ่งพาได้อย่างไร
  • ฉันจะใช้การอ้างอิงได้อย่างไร
  • ฉันจะสร้าง. deb ได้อย่างไร
  • ฉันต้องทำอะไรก่อนที่จะอัปโหลดไปยัง Launchpad?

1
ฉันถามคำถามนี้เพราะบางครั้งฉันแนะนำว่าโครงการ FLOSS เพื่อสร้าง PPA (เพื่อให้ฉันสามารถติดตั้งได้อย่างง่ายดาย :) - ฉันต้องการให้พวกเขาชี้ไปที่ทรัพยากรที่ละเอียดหรือทำด้วยตัวเองได้
david.libremone

คำตอบ:


32

นั่นเป็นคำถามที่กว้างมาก ฉันจะพยายามตอบให้มากที่สุดเท่าที่จะทำได้ แต่แน่นอนว่าจะไม่เป็นการสอนทีละขั้นตอน นี่เป็นเพราะไม่มีอัลกอริทึมทีละขั้นตอนสำหรับการสร้างแพคเกจ วิธีที่คุณจะทำนั้นขึ้นอยู่กับหลายปัจจัยส่วนใหญ่ขึ้นอยู่กับประเภทของแพคเกจ (แอปพลิเคชันไลบรารี) โครงสร้างของแหล่งที่มาและรายละเอียดมากมาย

โชคดีที่มีคำแนะนำอย่างละเอียดที่http://packaging.ubuntu.com

ฉันจะพยายามช่วยคุณเล็กน้อยในการทำความเข้าใจกระบวนการทั้งหมดดังนั้นเมื่อคุณคุ้นเคยกับมันมากขึ้น คู่มือบรรจุภัณฑ์มีแหล่งข้อมูลสำหรับความช่วยเหลือเพิ่มเติม


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

  • ภาษาการเขียนโปรแกรมไม่สำคัญเลย มันอาจเป็นแอปพลิเคชัน C ++, Bash script, Brainfuck Hello World, ไฟล์ README ไฟล์เดียวหรือชุดรูปภาพสุดเท่ แพ็คเกจอาจมีไฟล์ใด ๆ ระหว่างการติดตั้งแพ็คเกจจะถูกแตกไปยังรูท ("/") ของระบบไฟล์ของคุณ ด้วยวิธีนี้พวกเขาสามารถวางไฟล์บางไฟล์ไว้ในโฟลเดอร์ไบนารีเพิ่มวอลล์เปเปอร์บางอย่างลงในชุดเริ่มต้นของ GNOME หรือให้สคริปต์ Bash แก่ผู้ใช้
  • คุณไม่จำเป็นต้องเพิ่มสิ่งที่แหล่งที่มา ต้องเป็นไดเรกทอรีระดับบนสุดที่ชื่อว่า "debian" จะมีบางไฟล์ที่มีรายละเอียดแพ็คเกจ - ไฟล์เหล่านั้นจะถูกใช้เพื่อกำหนดประเภทของแพ็คเกจเป็นต้น
  • การอ้างอิงอยู่ในรายการหนึ่งในไฟล์นี้ (ท่ามกลางรายละเอียดอื่น ๆ ) หาได้จากที่ไหน มันเป็นเพียงแพ็คเกจอื่น ๆ ที่แอปพลิเคชันของคุณใช้ ผู้พัฒนาแอปพลิเคชันจะรู้ว่าไลบรารีและแหล่งข้อมูลใดที่โปรแกรมของเขาต้องการดังนั้นเขาจึงไม่ควรมีปัญหามากในการแสดงรายการ
    • เครื่องมือบางอย่างที่ใช้ในการสร้างแพคเกจ (ผู้สร้าง) สามารถกรอกข้อมูลการอ้างอิงโดยอัตโนมัติโดยอาจกำหนดว่าแอปของคุณต้องการอะไรในระหว่างการรวบรวม
  • นอกจากนี้ยังขอแนะนำให้ใช้autotools นั่นคือสิ่งอื่น ๆ ที่คุณอาจต้องเพิ่ม แต่อาจเป็นไปได้ว่าซอฟต์แวร์เกือบทุกชิ้นจะใช้งานแล้ว AutoTools เป็นชุดโปรแกรมที่มีประโยชน์อย่างยิ่ง - automake, autoconf และ autoscan เพื่อตั้งชื่อไม่กี่ เมื่อคุณคอมไพล์ & ติดตั้งโปรแกรมด้วย. / config && make && ทำการติดตั้งที่มีชื่อเสียง จากนั้นเครื่องมืออัตโนมัติจะใช้ในการจัดการกับแหล่งข้อมูลโดยอัตโนมัติเพื่อเตรียมทรัพยากรอื่น ๆ ที่มาพร้อมกับแหล่งข้อมูลเพื่อการติดตั้งและเพื่อแยกผลลัพธ์ของการคอมไพล์ไปยังตำแหน่งที่เหมาะสม (เพื่อตอบคำถามของคุณ: บิลด์ ไบนารีจะไปที่ / usr / local / bin, เอกสารถึง / usr / local / share / docs เป็นต้นนอกจากนี้ไบนารีจากแพ็คเกจจะไปยังสถานที่ที่แตกต่างกันเช่นไบนารีไปยัง / usr / bin ด้วยรูปแบบไดเรกทอรีที่ซับซ้อนนี้ใช้ AutoTools - มันจะดูแลโดยอัตโนมัติและนั่นคือเหตุผลที่พวกเขามีประโยชน์มาก)

การสร้างแพ็คเกจ. deb อาจดูเหมือนว่าเป็นกระบวนการที่ซับซ้อน แต่ก็ไม่ได้ยาก ฉันขอแนะนำให้คุณใช้คู่มือ Ubuntu อย่างเป็นทางการในการสร้างแพ็คเกจ: http://packaging.ubuntu.com

มันใหญ่มาก แต่คุณจะเห็นว่าคุณสามารถข้ามข้อความส่วนใหญ่ไปได้ (ขึ้นอยู่กับแพ็คเกจที่คุณกำลังจะสร้าง) โดยทั่วไปกระบวนการบรรจุภัณฑ์ประกอบด้วยชิ้นส่วนเหล่านี้ (ทั้งหมดอธิบายไว้อย่างชัดเจนในคู่มือ) :

  1. เริ่มเครื่องมือบางอย่างที่ใช้ในการสร้างแพคเกจ
  2. รับแหล่งที่มา
  3. สร้างไดเร็กทอรี. /debian และกรอกข้อมูลที่จำเป็น
  4. สร้างแพ็คเกจด้วย debuild [ที่ควรสร้างชุดของไฟล์รวมถึง * .dsc, * _source.build, * _source.changes ซึ่งรับผิดชอบข้อมูลเกี่ยวกับแพ็คเกจและวิธีจัดการกับมัน (คุณจะต้องมี แหล่งที่มา. tar.gz)]
  5. ทดสอบว่าการทำงานทุกอย่างโดยการเรียกใช้ pbuilder ท้องถิ่น (มันจะนำไฟล์เหล่านี้ทั้งหมดดังกล่าวข้างต้นและพยายามที่จะรวมไว้ในแพคเกจ .deb โดยการสร้างแหล่งที่มาโดยอัตโนมัติด้วยความช่วยเหลือของ autotools - ที่ว่าทำไมพวกเขามีความสำคัญสำหรับบรรจุภัณฑ์[พูดตรงไปตรง - ไม่ - คุณสามารถเข้าร่วมโดยไม่มีพวกเขาหรือมีทางเลือกอื่น ๆ แต่นั่นเป็นวิธีที่ง่ายที่สุดและอื่น ๆ อาจต้องมีการตั้งค่าขั้นสูงเนื่องจากคุณจะต้องสั่งให้ผู้สร้างรู้วิธีสร้างแหล่งที่มา (โดยใช้ไฟล์. /debian/rules ) - แต่นั่นไม่ใช่สำหรับผู้เริ่มต้น] ) - หากคุณต้องการรับแพ็คเกจ. deb ก็เสร็จสิ้น

ตอนนี้คุณจะต้องอัปโหลดไปยัง PPA ของคุณซึ่งอธิบายไว้ในหน้าความช่วยเหลือนี้: https://help.launchpad.net/Packaging/PPA/Uploading

  1. ใช้ dput เพื่ออัปโหลดไฟล์เหล่านี้ไปยัง Launchpad
  2. Launchpad จะทำงาน pbuilder บนของพวกเขาคอมพิวเตอร์และสร้างแพคเกจในสภาพแวดล้อมที่สะอาด
  3. ในที่สุดแพ็คเกจควรปรากฏใน PPA

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

ฉันขอให้คุณโชคดีในการสร้างแพ็คเกจหวังว่าคุณจะได้คำตอบที่เป็นประโยชน์ :)

เพื่อนของคุณRafałCieślak


คุณจะสร้าง PPA ที่ไม่ใช่ Launchpad ซึ่งโฮสต์บนโครงสร้างพื้นฐานของคุณเองได้อย่างไร มันเป็นเพียงเว็บเซิร์ฟเวอร์ธรรมดาที่มีโครงสร้างไดเรกทอรีที่เหมาะสมหรือไม่?
ศ. Moriarty

ตัวอย่าง brainf * ck จำเป็นจริงๆเหรอ?
แคมเดน

5
  • ก่อนที่คุณจะสามารถอัปโหลดแพคเกจของคุณคุณจะต้องตั้งขึ้นสำหรับ.debบรรจุภัณฑ์ให้ดูที่อูบุนตูPackagingGuide

  • เมื่อคุณสามารถสร้างแพคเกจสำหรับซอฟต์แวร์ของคุณให้ดู Launchpad ของเอกสารสัญญาซื้อขายไฟฟ้า มันจะแนะนำคุณจากการสร้าง PPA เพื่ออัปโหลดแพ็คเกจของคุณ

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