ฉันจะสร้าง PPA ได้อย่างไร


123

ฉันจะสร้าง PPA ที่กำหนดเองเพื่อแชร์กับชุมชน Ubuntu ได้อย่างไร ฉันกำลังพยายามสร้างชุดแพ็กเกจที่กำหนดเองของฉันเองและฉันต้องการแบ่งปันกับชุมชนจริงๆ


ที่เกี่ยวข้องหรือเหมือนกัน: askubuntu.com/questions/28562/…
fossfreedom

บางทีนี่อาจช่วยให้Packaging.ubuntu.com/html/getting-set-up.html
rubo77

คำตอบ:


97

ด้วยการใช้ Personal Package Archive ( PPA ) คุณสามารถแจกจ่ายซอฟต์แวร์และการอัพเดทโดยตรงไปยังผู้ใช้ Ubuntu สร้างซอร์สแพ็กเกจอัพโหลดและ Launchpad จะสร้างไบนารีจากนั้นโฮสต์แพ็กเกจในที่เก็บ apt ของคุณเอง

นี่คือคำอธิบายรายละเอียด


5
FWIW ฉันสามารถใช้งาน PPA ของฉันก่อนที่ฉันจะลงนามในจรรยาบรรณ
Sparhawk

2
นี่คือคำตอบที่ดีที่สุด คุณเพิ่งถูกบอกวิธีสร้าง PPA การตอบสนองด้านล่าง (โดย totti) ไม่ใช่ PPA แต่เป็นที่เก็บข้อมูลสาธารณะ ทั้งสองมีความแตกต่างแม้จะประสบความสำเร็จในสิ่งเดียวกัน เขายังกล่าวว่าในบรรทัดแรกของคำตอบของเขา:“ คำถามนี้มีคำตอบที่เป็นที่ยอมรับและเป็นที่ยอมรับเนื่องจาก OP ต้องการวิธีง่ายๆในการเผยแพร่แพ็คเกจของเขาฉันจึงแฮ็คง่ายๆ” เพราะคุณชอบแฮ็คง่าย ๆ ไม่ได้ทำให้เป็นคำตอบที่ดีที่สุด
lbaile200

ตกลง แต่ไม่มีลิงก์ใด ๆ ในคำตอบนี้จริงๆอธิบายถึงวิธีการทำตั้งแต่เริ่มต้น ลิงก์ทั้งหมดที่สร้างขึ้นสำหรับนักพัฒนาซอฟต์แวร์ซึ่งมีอยู่แล้วในเนื้อหาอื่น ๆ อีกมากมาย
rubo77

1
@ rubo77 - "วิธีการสร้าง" นั้นกว้างเกินไปที่จะตอบได้ ทุกอย่างขึ้นอยู่กับสิ่งที่คุณพยายามทำแพ็คเกจ อันที่จริงแต่ละขั้นตอนในคำตอบข้างต้นสามารถเป็นคิวของแต่ละบุคคลพร้อมกับคำตอบอย่างละเอียดแต่ละข้อ
fossfreedom

1
คำตอบใหม่ของ Totti นั้นยอดเยี่ยมมากแล้ว
rubo77

86

วิธีสร้างไฟล์. deb

นี่คือบทช่วยสอนเกี่ยวกับการสร้างไฟล์. deb พื้นฐานจากสคริปต์ตัวอย่างที่กำหนด ในบทช่วยสอนนี้ก่อนอื่นเราสร้างโปรแกรมตัวอย่างใน bash ที่แสดง 'HELLO FROM PROGRAM' จากนั้นเราสร้างไฟล์ควบคุมสำหรับโปรแกรมเพื่อทำการติดตั้งเดเบียน ในที่สุดพวกเขาจะถูกบรรจุเป็น.debไฟล์

ขั้นตอน:

  1. สร้างโปรแกรมตัวอย่างในทุบตี

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    วางรหัสต่อไปนี้ลงไป

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. ทำให้โปรแกรมปฏิบัติการได้

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. สร้างไฟล์ควบคุมสำหรับแพ็คเกจเดเบียน

    สร้างชื่อไฟล์controlภายในโฟลเดอร์DEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    และวางรายละเอียดต่อไปนี้

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

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

  4. สร้างpostinstสคริปต์ที่ดำเนินการทันทีหลังจากติดตั้งแพคเกจ

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    จากนั้นวาง

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    และทำให้มันปฏิบัติการได้

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. สร้างprermสคริปต์ที่ดำเนินการก่อนที่จะลบแพ็คเกจ

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    และทำให้มันปฏิบัติการได้

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. จัดทำโครงสร้างแพ็คเกจและคัดลอกโปรแกรมข้อมูล ฯลฯ
    สร้างโครงสร้างของโปรแกรมที่ติดตั้งและข้อมูล /binในตัวอย่างนี้เราใส่แฟ้มที่

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. สร้างไฟล์ . deb

    dpkg-deb --build "$HOME"/create_deb .
    

    โดย.อัตโนมัติจะตั้งชื่อ.debไฟล์ด้วยเวอร์ชัน, arch เป็นต้นหรือชื่อที่คุณกำหนดเอง

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    หรือถ้าคุณสร้างไฟล์. deb ด้วย

    debuild -k'your GPG key here' -S
    

    จากนั้นคุณสามารถอัปโหลดไปยัง Ubuntu Launchpad ด้วย

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    เช่นที่อธิบายไว้ที่นี่ (แหล่งที่มา: สร้างแพ็คเกจ. deb จากสคริปต์หรือไบนารี )

  8. ติดตั้ง.debแพ็คเกจที่สร้างขึ้นใหม่ คุณสามารถเปิดด้วยsoftware-centerแต่อาจไม่อนุญาตให้คุณติดตั้ง ดังนั้นฉันแนะนำให้ใช้gdebiตัวจัดการแพคเกจ

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    ตอนนี้คุณสามารถติดตั้ง ระหว่างการติดตั้งคุณควรเห็นบทสนทนา gtk

    กำลังติดตั้งโปรแกรม: zenity_hello.sh ......

  9. zenity_helloหลังจากติดตั้งเปิดสถานีและประเภท หากโปรแกรมติดตั้งอย่างถูกต้องและทุกอย่างตกลงคุณจะเห็นบทสนทนา gtk

    สวัสดีจากโปรแกรม

  10. การลบแพ็คเกจ

    sudo apt-get remove zenity_hello
    

เผยแพร่พื้นที่เก็บข้อมูลของคุณใน 2 นาที

เนื่องจาก OP ต้องการวิธีง่ายๆในการเผยแพร่แพ็คเกจของเขาฉันจึงแฮกง่าย

ข้อกำหนด: บัญชีดรอปบ็อกซ์ (หรือบริการอื่น ๆ เช่นgithub ) พร้อมโฟลเดอร์สาธารณะ

  1. สร้างโฟลเดอร์ภายใน Public-Dropbox-Folder ที่คุณใส่ไฟล์ * .deb ของคุณ:

    mkdir ~/Dropbox/Public/deb-packages  
    

    หรือสร้างโฟลเดอร์นั้นที่อื่นแล้วใส่ symlink ในโฟลเดอร์สาธารณะของคุณ:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. ไปที่โฟลเดอร์นั้นและสร้างสคริปต์ที่เมื่อใช้งานจะสร้าง Packages.gz ซึ่งมีข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับแพ็คเกจแพ็คเกจของคุณ สร้าง:

    gedit import.sh  
    

    ใส่สิ่งนี้ลงไป:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    ทำให้ปฏิบัติการได้:

    chmod  x import.sh
    
  3. คัดลอกไฟล์ * .deb บางไฟล์ลงในโฟลเดอร์ อาจเป็นของคุณเองหรือบางส่วนที่ไม่สามารถใช้ได้ผ่านที่เก็บอื่น ๆ จากนั้นไปที่โฟลเดอร์และเรียกใช้สคริปต์ที่เราใส่ไว้:

    cd ~/deb-packages/ 
    ./import.sh
    

    ควรสร้างไฟล์ที่เรียกว่าPackages.gzซึ่งเหมาะสำหรับการรู้ว่าแพ็คเกจใดตั้งอยู่ที่ที่เก็บนี้


แค่นั้นแหละ

ตอนนี้รอให้ Dropbox เพื่อประสานโฟลเดอร์และคว้าสาธารณะ URL Packages.gzจาก ควรมีลักษณะดังนี้:

http://dl.getdropbox.../Packages.gz

กำจัดจุดสิ้นสุดของลิงก์ใส่คำเพิ่มเติมลงไปและคุณสามารถใช้และเติมบรรทัดต่อไปนี้สำหรับแหล่งที่มารายการ:

deb http://dl.getdropbox.../deb-packages ./

เพียงเท่านี้คุณก็จะสามารถใช้ที่เก็บ deb ของคุณเองได้ ซิงโครไนซ์เสมอในเครื่อง แต่ใช้ได้กับทุกคนทุกที่ทุกเวลา

หมายเหตุ: dpkg-scanpackagesมีให้จากdpkg-dev
การอ้างอิง


3
+1 ยอดเยี่ยม! สิ่งนี้ทำงาน: ฉันใช้ Github และมีไดเรกทอรีดิบสำหรับโฟลเดอร์releases/ดูgithub.com/rubo77/mouse-speed/blob/master/release/ …
rubo77

สิ่งนี้อธิบาย PPA ที่โฮสต์ด้วยตนเอง แต่ฉันจะสร้างแพ็คเกจ debian ของ Ubuntu ได้อย่างไร
rubo77

3
หากคุณสร้างไฟล์. deb ในขั้นตอนที่ 7 debuild -us -uc -k'your GPG key here'คุณสามารถอัปโหลดไฟล์dput ppa:<lp-username>/<ppa-name> packet-source.changesไปยัง Launchpad ได้ตามที่อธิบายไว้ที่นี่ (ที่มา: สร้างแพ็คเกจ. deb จากสคริปต์หรือไบนารี )
rubo77

@ rubo77 ขอบคุณฉันยินดีต้อนรับคุณเพื่อเพิ่มข่าวสารนี้ในตอนท้ายของคำตอบของฉัน
totti

1
ตกลงฉันเพิ่งค้นพบว่าคุณต้องการพารามิเตอร์อื่น ๆ สำหรับ Launchpad เพื่อไม่ให้สร้างไฟล์. deb ตอนนี้ (แค่ -S): debuild -k'your GPG key here' -Sเนื่องจาก Launchpad จะสร้างไฟล์ deb (ถ้าไม่ได้ปฏิเสธ) - อะไร `-us -uc` จะเป็นไปได้หรือไม่
rubo77

2

คุณจะต้องมีบัญชี Launchpad.net เพื่อสร้าง PPA เพียงคลิกที่ผู้ใช้ของคุณบน Launchpad (คลิกที่ชื่อของคุณที่ด้านซ้ายบน) และสร้าง PPA คุณอาจต้องลงนามในหลักจรรยาบรรณและลงทะเบียนรหัส GPG กับบัญชีของคุณ

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