ฉันจะสร้าง PPA ที่กำหนดเองเพื่อแชร์กับชุมชน Ubuntu ได้อย่างไร ฉันกำลังพยายามสร้างชุดแพ็กเกจที่กำหนดเองของฉันเองและฉันต้องการแบ่งปันกับชุมชนจริงๆ
ฉันจะสร้าง PPA ที่กำหนดเองเพื่อแชร์กับชุมชน Ubuntu ได้อย่างไร ฉันกำลังพยายามสร้างชุดแพ็กเกจที่กำหนดเองของฉันเองและฉันต้องการแบ่งปันกับชุมชนจริงๆ
คำตอบ:
ด้วยการใช้ Personal Package Archive ( PPA ) คุณสามารถแจกจ่ายซอฟต์แวร์และการอัพเดทโดยตรงไปยังผู้ใช้ Ubuntu สร้างซอร์สแพ็กเกจอัพโหลดและ Launchpad จะสร้างไบนารีจากนั้นโฮสต์แพ็กเกจในที่เก็บ apt ของคุณเอง
นี่คือบทช่วยสอนเกี่ยวกับการสร้างไฟล์. deb พื้นฐานจากสคริปต์ตัวอย่างที่กำหนด ในบทช่วยสอนนี้ก่อนอื่นเราสร้างโปรแกรมตัวอย่างใน bash ที่แสดง 'HELLO FROM PROGRAM' จากนั้นเราสร้างไฟล์ควบคุมสำหรับโปรแกรมเพื่อทำการติดตั้งเดเบียน ในที่สุดพวกเขาจะถูกบรรจุเป็น.deb
ไฟล์
สร้างโปรแกรมตัวอย่างในทุบตี
mkdir "$HOME/create_deb/pgmdir"
gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
วางรหัสต่อไปนี้ลงไป
#!/bin/bash
echo 'HELLO FROM PROGRAM' | zenity --text-info
ทำให้โปรแกรมปฏิบัติการได้
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
สร้างไฟล์ควบคุมสำหรับแพ็คเกจเดเบียน
สร้างชื่อไฟล์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.
คุณสามารถแก้ไขเนื้อหาได้หากต้องการ อ่านข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบของไฟล์นี้ที่นี่และที่นี่
สร้าง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"
สร้างprerm
สคริปต์ที่ดำเนินการก่อนที่จะลบแพ็คเกจ
#!/bin/sh
set -e
echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
และทำให้มันปฏิบัติการได้
chmod +x "$HOME/create_deb/DEBIAN/prerm"
จัดทำโครงสร้างแพ็คเกจและคัดลอกโปรแกรมข้อมูล ฯลฯ
สร้างโครงสร้างของโปรแกรมที่ติดตั้งและข้อมูล /bin
ในตัวอย่างนี้เราใส่แฟ้มที่
mkdir -p "$HOME"/create_deb/bin
cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
สร้างไฟล์ . 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 จากสคริปต์หรือไบนารี )
ติดตั้ง.deb
แพ็คเกจที่สร้างขึ้นใหม่ คุณสามารถเปิดด้วยsoftware-center
แต่อาจไม่อนุญาตให้คุณติดตั้ง ดังนั้นฉันแนะนำให้ใช้gdebi
ตัวจัดการแพคเกจ
sudo apt-get install gdebi
gdebi "$HOME"/create_deb/hellodeb.deb
ตอนนี้คุณสามารถติดตั้ง ระหว่างการติดตั้งคุณควรเห็นบทสนทนา gtk
กำลังติดตั้งโปรแกรม: zenity_hello.sh ......
zenity_hello
หลังจากติดตั้งเปิดสถานีและประเภท หากโปรแกรมติดตั้งอย่างถูกต้องและทุกอย่างตกลงคุณจะเห็นบทสนทนา gtk
สวัสดีจากโปรแกรม
การลบแพ็คเกจ
sudo apt-get remove zenity_hello
เนื่องจาก OP ต้องการวิธีง่ายๆในการเผยแพร่แพ็คเกจของเขาฉันจึงแฮกง่าย
ข้อกำหนด: บัญชีดรอปบ็อกซ์ (หรือบริการอื่น ๆ เช่นgithub ) พร้อมโฟลเดอร์สาธารณะ
สร้างโฟลเดอร์ภายใน Public-Dropbox-Folder ที่คุณใส่ไฟล์ * .deb ของคุณ:
mkdir ~/Dropbox/Public/deb-packages
หรือสร้างโฟลเดอร์นั้นที่อื่นแล้วใส่ symlink ในโฟลเดอร์สาธารณะของคุณ:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
ไปที่โฟลเดอร์นั้นและสร้างสคริปต์ที่เมื่อใช้งานจะสร้าง Packages.gz ซึ่งมีข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับแพ็คเกจแพ็คเกจของคุณ สร้าง:
gedit import.sh
ใส่สิ่งนี้ลงไป:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
ทำให้ปฏิบัติการได้:
chmod x import.sh
คัดลอกไฟล์ * .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
การอ้างอิง
releases/
ดูgithub.com/rubo77/mouse-speed/blob/master/release/ …
debuild -us -uc -k'your GPG key here'
คุณสามารถอัปโหลดไฟล์dput ppa:<lp-username>/<ppa-name> packet-source.changes
ไปยัง Launchpad ได้ตามที่อธิบายไว้ที่นี่ (ที่มา: สร้างแพ็คเกจ. deb จากสคริปต์หรือไบนารี )
debuild -k'your GPG key here' -S
เนื่องจาก Launchpad จะสร้างไฟล์ deb (ถ้าไม่ได้ปฏิเสธ) - อะไร `-us -uc` จะเป็นไปได้หรือไม่
คุณจะต้องมีบัญชี Launchpad.net เพื่อสร้าง PPA เพียงคลิกที่ผู้ใช้ของคุณบน Launchpad (คลิกที่ชื่อของคุณที่ด้านซ้ายบน) และสร้าง PPA คุณอาจต้องลงนามในหลักจรรยาบรรณและลงทะเบียนรหัส GPG กับบัญชีของคุณ