Skip to main content

คู่มือการบรรจุหีบห่อ Ubuntu - บรรจุภัณฑ์ด้วย Debhelper

S Super Review ep-3 การบรรจุหีบห่อ (packing) ก่อนการส่งออก (อาจ 2025)

S Super Review ep-3 การบรรจุหีบห่อ (packing) ก่อนการส่งออก (อาจ 2025)
Anonim

บรรจุภัณฑ์ด้วย 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 / ลิตร / k / b s ชื่อผู้ดูแล: Captain Packager อีเมลแอดเดรส: [email protected] วันที่: พฤ., 6 เม.ย. 2549 10:07:19 -0700 ชื่อแพคเกจ: hello เวอร์ชัน: 2.1.1 ใบอนุญาต: ว่างเปล่าประเภทของแพคเกจ: Hit เดี่ยว เพื่อยืนยัน: เข้าสู่

ข้อควรระวัง

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

วิ่ง dh_make -e ทำสองสิ่ง:

  • สร้าง hello_2.1.1.orig.tar.gz ไฟล์ในไดเร็กทอรีหลัก
  • สร้างไฟล์พื้นฐานที่จำเป็นใน เดเบียน / และไฟล์แม่แบบจำนวนมาก (.ex) ที่อาจจำเป็น

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

cd debian rm * .ex * .EX

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

* การอนุญาต

* ดัชนีคู่มือการบรรจุหีบห่อ Ubuntu

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

ณ จุดนี้คุณควรมีเท่านั้น การเปลี่ยนแปลง, compat, ควบคุม, ลิขสิทธิ์, และ กฎระเบียบ ไฟล์ใน เดเบียน ไดเรกทอรี จากส่วนที่เรียกว่า "Packaging From Scratch" ไฟล์เฉพาะที่ใหม่คือ compatซึ่งเป็นไฟล์ที่มีไฟล์ debhelper (ในกรณีนี้คือ 4) ที่ใช้

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

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

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

แหล่งที่มา: hello-debhelper ส่วน: devel ลำดับความสำคัญ: พิเศษผู้ดูแล: Capitan Packager รุ่นมาตรฐาน: 3.6.1 Build-Depends: debhelper (> = 4) แพคเกจ: hello-debhelper สถาปัตยกรรม: ทุกส่วนขึ้นอยู่กับ: $ {shlibs: ขึ้นอยู่กับ} ความขัดแย้ง: hello ให้: hello แทนที่: hello คำอธิบาย: อวยพรแบบคลาสสิกและ a ตัวอย่างที่ดีโปรแกรมสวัสดีของ GNU สร้างคำทักทายที่เป็นมิตรและเป็นกันเอง ช่วยให้ผู้ที่ไม่ใช่โปรแกรมเมอร์สามารถใช้เครื่องมือวิทยาศาสตร์คอมพิวเตอร์คลาสสิกซึ่งจะไม่สามารถใช้งานได้ . อย่างจริงจังแม้ว่า: นี่คือตัวอย่างของวิธีการทำแพคเกจ Debian เป็นโครงการ Debian ของโครงการ 'hello world' ของโครงการ GNU Project ซึ่งเป็นตัวอย่างของโครงการ GNU Project . นี่เป็นเช่นเดียวกับแพคเกจ hello ยกเว้นใช้ debhelper เพื่อทำให้ deb โปรดดู debhelper ว่ามันคืออะไร

เราสามารถคัดลอก ลิขสิทธิ์ ไฟล์และ postinst และ prerm สคริปต์จากอูบุนตู 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 สคริปต์สามารถมองเห็นได้ debhelper รุ่นของ กฎระเบียบ มีขนาดเล็ก (54 บรรทัดเมื่อเทียบกับ 72 บรรทัดในเวอร์ชันจากส่วนที่เรียกว่า "กฎ")

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_testdir) ให้แน่ใจว่าคุณกำลังสร้างแพคเกจที่มีสิทธิ์ root (dh_testroot), การติดตั้งเอกสาร (dh_installdocs และ dh_installchangelogs) และทำความสะอาดหลังจากสร้าง (dh_clean) จะถูกจัดการโดยอัตโนมัติ แพคเกจจำนวนมากที่ซับซ้อนมากขึ้นกว่า สวัสดี มี กฎระเบียบ ไฟล์ไม่ใหญ่เพราะ debhelper สคริปต์จัดการงานส่วนใหญ่ สำหรับรายการที่สมบูรณ์ของ debhelper โปรดดูที่ส่วนที่เรียกว่า "List of debhelper สคริปต์ "พวกเขายังมีเอกสารที่ดีในแต่ละของพวกเขา ชาย หน้า เป็นแบบฝึกหัดที่มีประโยชน์ในการอ่านหน้า man (เขียนได้ดีและไม่ยาว) สำหรับสคริปต์ช่วยเหลือแต่ละตัวที่ใช้ในด้านบน กฎระเบียบ ไฟล์.