ฉันต้องการสร้างไฟล์ DEB ด้วยตนเอง ฉันต้องการเพียงแค่ระบุโฟลเดอร์ที่มีข้อมูลที่จะติดตั้งและสคริปต์ที่จะดำเนินการหลังจากการติดตั้ง
เป็นไปได้ไหม
ฉันต้องการสร้างไฟล์ DEB ด้วยตนเอง ฉันต้องการเพียงแค่ระบุโฟลเดอร์ที่มีข้อมูลที่จะติดตั้งและสคริปต์ที่จะดำเนินการหลังจากการติดตั้ง
เป็นไปได้ไหม
คำตอบ:
คำแนะนำของฉันคือการทำแพคเกจที่มา ติดตั้งสร้างสิ่งจำเป็น , debhelper , DH-แต่งหน้า เปลี่ยนไดเรกทอรีที่ไฟล์ที่คุณต้องการติดตั้งอยู่ (ชื่อไดเรกทอรีต้องอยู่ในรูปแบบ$PACKAGE-$VERSION
เช่นmyapp-4.2-1
สำหรับครั้งแรกที่บรรจุภัณฑ์ MyApp v4.2) dh_make --createorig
และวิ่ง ตอบคำถาม. Debhelper จะสร้างโครงสร้างพื้นฐานพื้นฐานที่จำเป็นในการสร้างแพ็คเกจโดยการสร้างไฟล์ในไดเรกทอรีย่อยที่เรียกว่าdebian
ทั้งไฟล์บังคับและแม่แบบบางไฟล์สำหรับไฟล์เสริม คุณอาจต้องแก้ไขไฟล์เหล่านี้:
debian/rules
เพื่อสร้างสิ่งที่ต้องการสร้างและติดตั้งไฟล์ในตำแหน่งที่ถูกต้อง หากคุณต้องการคัดลอกไฟล์บางไฟล์และไม่คอมไพล์ไฟล์debian/install
ให้แก้ไขไฟล์เพื่อระบุไฟล์ที่จะต้องติดตั้งdebian/copyright
เพื่อเพิ่มข้อมูลใบอนุญาตเกี่ยวกับแพคเกจของคุณและข้อมูลเกี่ยวกับสถานที่รับเวอร์ชันล่าสุด (ถ้าเกี่ยวข้อง)debian/changelog
เพื่อลบการอ้างอิงไปยัง ITP (เฉพาะที่เกี่ยวข้องถ้าคุณทำงานให้กับโครงการ Debian) เปลี่ยนชื่อdebian/postinst.ex
เป็นdebian/postinst
และเพิ่มคำสั่งหลังการติดตั้งที่นั่น หากคุณอัปเดตแพคเกจภายหลังให้เรียกใช้debchange -i
เพื่อเพิ่มรายการบันทึกการเปลี่ยนแปลงหรือแก้ไขไฟล์ใน Emacs (เมื่อติดตั้งdpkg-dev-el )เรียกใช้dpkg-buildpackage -rfakeroot -us -uc
เพื่อสร้าง.deb
แพ็คเกจ (ลบ-us -uc
หากคุณต้องการเซ็นชื่อแพ็คเกจด้วยคีย์ PGP ของคุณ)
หากคุณตัดสินใจที่จะสร้างไบนารีแพคเกจโดยตรงโดยไม่ต้องสร้างจากแพ็กเกจซอร์สซึ่งไม่ได้ง่ายกว่าจริง ๆ เพราะไม่มีเครื่องมือมากมายที่จะอำนวยความสะดวกให้กับกระบวนการคุณจะต้องคุ้นเคยกับรูปแบบของแพ็กเกจพื้นฐาน มันเป็นเรื่องที่อธิบายไว้ในคู่มือนโยบาย Debianโดยเฉพาะอย่างยิ่งCH 3 (รูปแบบของแพ็คเกจไบนารี) , ch. 5 (ไฟล์ควบคุม) , ch. 6 (สคริปต์การติดตั้ง)และภาคผนวก B (การจัดการแพคเกจไบนารี)
คุณตรวจสอบให้แน่ใจว่าแพ็คเกจของคุณติดตั้งไฟล์ที่คาดหวัง/usr/share/doc/copyright
(ที่มีสิทธิ์ใช้งานเนื้อหาแพ็คเกจรวมถึงตำแหน่งที่จะค้นหาแพ็คเกจล่าสุด) และ/usr/share/doc/changelog.Debian.gz
(มีการเปลี่ยนแปลงของแพ็คเกจ deb) คุณไม่จำเป็นต้องใช้สิ่งเหล่านี้หากคุณจะใช้แพ็คเกจภายใน บริษัท แต่จะดีกว่าถ้ามีแพ็คเกจเหล่านี้
หากคุณมีเครื่องมือ Debian ให้ใช้dpkg-deb
เพื่อสร้างแพ็คเกจ ในไดเรกทอรีที่มีข้อมูลที่จะติดตั้งเพิ่มไดเรกทอรีที่เรียกว่าDEBIAN
ที่ระดับบนสุดที่มีไฟล์ควบคุมและสคริปต์ผู้ดูแล
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
หากคุณไม่ได้มีเครื่องมือ Debian สร้างที่เก็บของไฟล์ที่คุณต้องการแพคเกจที่เรียกว่าdata.tar.gz
เป็นที่เก็บแยกต่างหากจากไฟล์ควบคุมที่เรียกว่าcontrol.tar.gz
(ไม่ไดเรกทอรีย่อย) และไฟล์ข้อความที่เรียกว่าและมีข้อความdebian-binary
2.0
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
คุณต้องไม่น้อยกว่าแฟ้มควบคุมด้วยฟิลด์Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, และการประกาศการพึ่งพาใด ๆ ที่จำเป็น
postinst
สคริปต์ที่จะดำเนินการหลังจากการติดตั้งจะเรียกว่า ตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้ มันไปพร้อมcontrol
กัน
หากคุณมีแพ็คเกจไบนารีจากการกระจายอื่นคุณสามารถใช้เอเลี่ยนเพื่อแปลงเป็น
dch -i
ใช้ได้
ar
ทำอะไรอยู่ที่tar
ไม่ใช่?
dh_make --createorig
ใช้คุณต้องexport DEBEMAIL="me@example.com"
และexport DEBFULLNAME="Firstname Lastname"
ก่อน
ก่อนอื่นคุณต้องสร้างโฟลเดอร์ build และไฟล์เก็บถาวรของคุณ: tar czvf data.tar.gz files
จากนั้นในโฟลเดอร์สร้างคุณต้องสร้างไฟล์ควบคุมด้วยข้อมูลที่ต้องการ:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
จากนั้นคุณสามารถเพิ่มสคริปต์เปลือก preinst, postint, prerm และ postrm ได้อย่างอิสระเพื่อควบคุมการติดตั้งก่อนและหลังการติดตั้งและก่อนและโพสต์พฤติกรรมการลบของไฟล์. deb จากนั้นคุณสามารถสร้างไฟล์เก็บถาวรควบคุมด้วย tar: tar czvf control.tar.gz control preinst postinst prerm postrm
echo 2.0 > debian-binary
แล้วคุณจะต้องเป็นไฟล์ไบนารีเดเบียน: ในการสร้างโฟลเดอร์ที่คุณควรมีในขณะนี้ไฟล์เหล่านี้: และdebian-binary
control.tar.gz
data.tar.gz
ในที่สุดคุณจำเป็นต้องมีar
แพคเกจเพื่อสร้างไฟล์. deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
คุ้มค่าของการเน้นย้ำลำดับสำคัญ: การควบคุมต้องมาก่อนข้อมูล
ฉันทำแพคเกจจำนวนมากและทำอย่างเต็มรูปแบบไม่ใช่เรื่องเล็กน้อย ในแง่บวกไฟล์และสคริปต์ใช้งานได้น้อยกว่ามาก คุณสามารถสร้างแพคเกจดังกล่าวมากเพียงด้วยเครื่องมือที่เรียกว่าdebreate
Debreate เป็น GUI ที่ง่ายมากสำหรับการสร้างแพ็คเกจ DEB อย่างง่าย คุณสามารถระบุไฟล์ที่จะไปและถ้า / สิ่งที่ควรดำเนินการในการติดตั้ง / ถอนการติดตั้ง / ถอนการติดตั้ง / ก่อน ฉันเคยทำแพ็คเกจทั้งหมดด้วยวิธีมาตรฐาน แต่หลังจากฉันเริ่มใช้เครื่องมือนี้ฉันจะกลับไปเมื่อจำเป็นเท่านั้น
ดู Debian Wiki บนบรรจุภัณฑ์บางทีequivs
(ดูลิงก์) ตรงตามความต้องการของคุณแล้ว
หน้าของ Wikipedia ในdeb
รูปแบบไฟล์ยังมีลิงค์ที่มีประโยชน์มากมาย
วิ่งเข้าไปหาสิ่งนี้ด้วย Zimbra 7 บน Debian โดยใช้แพ็คเกจ Ubuntu (ฉันหัวแข็งฉันชอบ Debian> bUbuntu ถึงแม้ Zimbra จะปล่อยเฉพาะ Ubuntu เท่านั้น) ไม่แน่ใจว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรก่อนหน้านี้ฉันแน่ใจว่าฉันไม่ต้องทำสิ่งนี้เมื่อฉันติดตั้งก่อนหน้านี้!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
ไฟล์ทั้งหมด .deb new/
ใหม่ของคุณจะอยู่ใน
หมายเหตุ : นี่เป็นบีบ - dpkg ใน wheezy มี --force-bad-version ตอนนี้
สำหรับการสร้างแพคเกจอย่างรวดเร็วคุณสามารถตรวจสอบผู้ใช้โปรแกรมติดตั้ง มันทำการติดตั้งโปรแกรมดูการเปลี่ยนแปลง - และสร้างแพ็คเกจ deb หรือ rpm ของมัน
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage