คู่มือการบรรจุหีบห่อ Ubuntu

เอกสาร

บรรจุภัณฑ์ด้วย Debhelper


[สำคัญ]

ข้อกำหนด: ข้อกำหนดจากส่วนที่เรียกว่า "Packaging From Scratch" บวกกับ debhelper และ dh-make

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

ในตัวอย่างนี้เราจะสร้างแพคเกจ GNU Hello อีกครั้ง แต่คราวนี้เราจะเปรียบเทียบงานของเรากับแพคเกจ Ubuntu hello-debhelper สร้างไดเรกทอรีที่คุณจะใช้งานอีกครั้ง:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

จากนั้นได้รับแพคเกจที่มาของอูบุนตู:

apt-get source hello-debhelper cd ..

เช่นเดียวกับตัวอย่างก่อนหน้าสิ่งแรกที่เราต้องทำคือการแกะกล่อง tarball เดิม (ต้นน้ำ)

tar -xzvf hello-2.1.1.tar.gz

แทนการคัดลอก tarball ต้นน้ำไปยัง hello_2.1.1.orig.tar.gz ตามที่เราได้ทำในตัวอย่างก่อนหน้านี้เราจะให้ dh_make ทำผลงานให้เรา สิ่งเดียวที่คุณต้องทำคือเปลี่ยนชื่อโฟลเดอร์ต้นทางเพื่อให้อยู่ในรูปแบบของ - โดยที่ชื่อแพ็กเกจเป็นตัวพิมพ์เล็ก ในกรณีนี้เพียง untarring tarball ผลิตไดเร็กทอรีแหล่งชื่ออย่างถูกต้องเพื่อให้เราสามารถย้ายเข้า:

cd hello-2.1.1

เพื่อสร้าง "debianization" เริ่มต้นของแหล่งที่มาเราจะใช้ dh_make

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_make จะถามคำถามต่างๆดังนี้

ประเภทของแพคเกจ: ไบนารีเดียวหลายไบนารีไลบรารีโมดูลเคอร์เนลหรือ cdbs? [s / m / l / k / b] s
ชื่อผู้ดูแล: Captain Packager อีเมลแอดเดรส: packager@coolness.com วันที่: พฤ., 6 เม.ย. 2549 10:07:19 -0700 ชื่อแพคเกจ: hello เวอร์ชัน: 2.1.1 ใบอนุญาต: ว่างเปล่าประเภทของแพคเกจ: Hit เดี่ยว ถึง ยืนยัน: Enter


[ข้อควรระวัง]

ใช้ dh_make -e เพียงครั้งเดียว ถ้าคุณเรียกใช้อีกครั้งหลังจากที่คุณทำมันเป็นครั้งแรกมันจะไม่ทำงานอย่างถูกต้อง หากคุณต้องการเปลี่ยนแปลงหรือทำผิดพลาดให้ลบไดเร็กทอรีต้นทางและยกเลิกการติดตั้ง tarball ต้นน้ำ จากนั้นคุณสามารถย้ายข้อมูลไปยังไดเร็กทอรีต้นทางและลองอีกครั้ง

รัน dh_make -e ทำสองสิ่ง:

โปรแกรม Hello ไม่ซับซ้อนมากเท่าที่เราได้เห็นในส่วนที่เรียกว่า "Packaging From Scratch" บรรจุภัณฑ์ไม่จำเป็นต้องมีมากกว่าไฟล์พื้นฐาน ดังนั้นให้เราลบไฟล์. ex :

cd debian rm * .ex * .EX

สำหรับ สวัสดี คุณก็จะไม่

* ใบอนุญาต

* ดัชนีคู่มือบรรจุภัณฑ์อูบุนตู

ต้องใช้ README.Debian (ไฟล์ README สำหรับปัญหาเฉพาะ Debian ไม่ใช่ README ของโปรแกรม), dirs (ใช้โดย dh_installdirs เพื่อสร้างไดเร็กทอรีที่จำเป็น) เอกสาร (ใช้โดย dh_installdocs เพื่อติดตั้งเอกสารประกอบของโปรแกรม) หรือ ข้อมูล (ใช้โดย dh_installinfo เพื่อติดตั้งข้อมูล) ไฟล์) ลงในไดเร็กทอรีของ เดเบียน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์เหล่านี้โปรดดูที่ส่วน "dh_make example files"

ณ จุดนี้คุณควรมีเฉพาะ changelog , compat , control , copyright และ rules files ในไดเร็กทอรีของ debian จากส่วนที่เรียกว่า "Packaging From Scratch" ไฟล์เฉพาะที่ใหม่คือ compat ซึ่งเป็นไฟล์ที่มี debhelper version (ในกรณีนี้ 4) ที่ใช้

คุณต้องปรับเปลี่ยน changelog เล็กน้อยในกรณีนี้เพื่อให้เห็นว่าแพคเกจนี้มีชื่อว่า hello-debhelper ไม่ใช่แค่ hello :

hello-debhelper (2.1.1-1) dapper; เร่งด่วน = ต่ำ * การเปิดตัวครั้งแรก - Captain Packager วันพฤหัสบดีที่ 6 เมษายน 2549 เวลา 10:07:19 -0700

โดยใช้ debhelper สิ่งเดียวที่เราต้องเปลี่ยนใน การควบคุม คือชื่อ (แทนที่ hello สำหรับ hello-debhelper ) และเพิ่ม debhelper (> = 4.0.0) ลงในฟิลด์ Build-Depends สำหรับแพคเกจต้นทาง แพคเกจ Ubuntu สำหรับ hello-debhelper มีลักษณะดังนี้:

เราสามารถคัดลอกไฟล์ ลิขสิทธิ์ และสคริปต์ postinst และ prerm จากแพคเกจ Ubuntu hello-debhelper เนื่องจากยังไม่มีการเปลี่ยนแปลงเนื่องจากส่วนที่เรียกว่า "Packaging From Scratch" นอกจากนี้เราจะคัดลอกไฟล์ กฎ เพื่อให้เราสามารถตรวจสอบได้

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules

ไฟล์สุดท้ายที่เราต้องดูคือ กฎ ซึ่งสามารถมองเห็นพลังของสคริปต์ เดลล์ ได้ กฎ debhelper ของ กฎ มีขนาดเล็ก (54 บรรทัดเมื่อเทียบกับ 72 บรรทัดในเวอร์ชันจากส่วนที่เรียกว่า "rules")

รุ่น debhelper มีลักษณะดังนี้:

# / usr / bin / make -f package = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 ทำความสะอาด : dh_testdir dh_clean rm -f build - $ (MAKE) -i distclean install: สร้าง dh_clean dh_installdirs $ (MAKE) prefix = $ (CURDIR) / debian / $ (package) / usr \ mandir = $ (CURDIR) / debian / $ (package) / usr / share / man \ infodir = $ (CURDIR) / debian / $ (package) / usr / share / info \ install สร้าง: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # ไม่มีไฟล์ที่ไม่ใช่สถาปัตยกรรมที่จะอัพโหลด # สร้างโดยแพ็คเกจนี้ ถ้ามีพวกเขาจะ # ทำที่นี่ binary-arch: ติดตั้ง dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a ไบนารี: binary-indep binary- arch .PHONY: binary-arch binary-indep checkroot แบบไบนารี

( dh_testroot ) ติดตั้งเอกสาร ( dh_installdocs และ dh_installchangelogs ) และทำความสะอาดหลังจาก build ( dh_clean ) ได้รับการจัดการโดยอัตโนมัติ ( dh_testdir ) . แพคเกจจำนวนมากที่ซับซ้อนมากขึ้นกว่า สวัสดี มีไฟล์ กฎ ไม่ใหญ่เพราะสคริปต์ดี บั๊ก จับส่วนใหญ่ของงาน สำหรับรายการเดส เฟลเปอร์ สคริปต์ทั้งหมดโปรดดูที่ส่วน "รายการ บัฟเฟอร์สค ริป" พวกเขายังมีเอกสารที่ดีในหน้า คนของ ตน เป็นแบบฝึกหัดที่มีประโยชน์ในการอ่านหน้า man (เขียนได้ดีและไม่ยาว) สำหรับสคริปต์ช่วยเหลือแต่ละตัวที่ใช้ในไฟล์ กฎ ข้างต้น