packaging

About deb package building

วันนี้ขอพูดถึงเรื่องเล็ก ๆ ที่หลายคนมองไม่เห็น เกี่ยวกับการดาวน์โหลดและแตกซอร์สของ debian package ที่อยู่นอก apt repository ซึ่งไม่สามารถใช้คำสั่ง apt-get source <package> ได้

ซอร์สสำหรับ debian package นั้น โดยปกติจะแยก upstream tarball กับ debian patch ออกจากกัน เป็นแฟ้ม *.orig.tar.gz และ *.diff.gz ตามลำดับ และใช้แฟ้ม *.dsc ในการสรุปรายการแฟ้มทั้งหมดที่ต้องใช้ พร้อม MD5 sum ของแต่ละแฟ้มด้วย

ดังนั้น เวลาที่เตรียมซอร์สในแหล่งดาวน์โหลด จึงมักต้องมีอย่างน้อย 2-3 แฟ้มสำหรับแต่ละแพกเกจ ที่ต้องมีแน่ ๆ คือ *.dsc และ upstream tarball และอีกแฟ้มหนึ่งที่ต้องมีสำหรับแพกเกจทั่วไปที่ไม่ใช่ debian native คือ *.diff.gz ซึ่งเก็บส่วนต่างจาก upstream

หมายเหตุ: นี่คงเป็นรายการสุดท้ายสำหรับการกู้บทความเก่าของผม เขียนครั้งหน้าจะเป็นเนื้อหาใหม่แล้วครับ

เราได้พูดถึงคำสั่งสำหรับ build debian package ไปแล้วสองตัว คือ dpkg-buildpackage และ debuild ซึ่งตัวแรกจะใช้สร้าง .deb ส่วนตัวหลังจะเรียกตัวแรก ตามด้วยการตรวจสอบคุณภาพด้วย lintian/linda พร้อมทั้งเซ็นกำกับ (ถ้าระบุ) ..ครบทุกขั้นตอน

Topic: 

คล้าย ๆ กับที่ภาษาซีมี lint เป็นเครื่องมือตรวจสอบปัญหาในซอร์สโค้ด เดเบียนก็มีเครื่องมือที่ล้อชื่อกัน สำหรับตรวจสอบปัญหาในแพกเกจ คือ lintian แล้วก็มีเครื่องมือใหม่อีกชุดหนึ่งที่เกิดขึ้นทีหลัง คือ linda ถ้าคุณจะสร้างแพกเกจที่ใช้เผยแพร่ล่ะก็ คุณต้องไม่พลาดเครื่องมือทั้งสองนี้เด็ดขาด

นอกจากนี้ ในช่วงท้ายของตอนนี้ จะได้กล่าวถึง debuild ซึ่งเป็นเครื่องมือสร้างแพกเกจที่รวมทุกขั้นตอนไว้ให้คุณสั่งได้ง่าย ๆ

เมื่อคุณสร้างแพกเกจด้วยคำสั่ง dpkg-buildpackage แล้ว ก็สามารถตรวจสอบปัญหาด้วย lintian หรือ linda ได้โดยสั่งแบบนี้:

$ lintian -i package_version-release_arch.changes
$ linda -i package_version-release_arch.changes
Topic: 

เกี่ยวกับการสร้าง debian package

(ย้ายไปที่ หน้าใหม่)

Taxonomy upgrade extras: 

เดเบียนมีระบบแพกเกจที่ค่อนข้างครบเครื่อง และการ build แพกเกจ ก็มีเครื่องมืออำนวยความสะดวกหลายตัว ใครสนใจหัด build deb ก็อ่าน Debian New Maintainers' Guide ได้ครับ เนื้อหาค่อนข้างครบครัน ในบทความนี้ เราจะมาดูเครื่องมือ build deb กันคร่าว ๆ ก่อน

ก่อนอื่น มาดูส่วนประกอบของ source สำหรับ debian package กันก่อน โดยลองดึง source ของแพกเกจสักตัวมาดู:

$ apt-get source package

Topic: 
เดเบียนมี kernel image คอมไพล์สำเร็จมาให้แล้ว ในแพกเกจ linux-image-version-revision-cpu (เช่น linux-image-2.6.22-1-686) โดยจะเปิดตัวเลือกแบบครอบจักรวาล และ build module ทั้งหมด เพื่อให้ใช้ได้กับทุกเครื่อง แต่ถ้าคุณต้องการหรือจำเป็นต้องคอมไพล์ใช้เอง ก็จะมีวิธีคอมไพล์ในแบบฉบับของเดเบียน โดยสร้างเป็น deb package ที่สามารถใช้ติดตั้งซ้ำได้หลายครั้ง

สรุปขั้นตอนการคอมไพล์และติดตั้ง

แพกเกจเครื่องมือคอมไพล์เคอร์เนลก็คือ kernel-package และถ้าคุณใช้ menuconfig ก็จะต้องการ libncurses-dev ด้วย
# aptitude install kernel-package libncurses-dev
สำหรับซอร์สของเคอร์เนล คุณสามารถติดตั้งจากแพกเกจของเดเบียน หรือจะดาวน์โหลดจาก kernel.org ก็ได้ แต่โดยทั่วไป คงใช้ของเดเบียนมากกว่า
# aptitude install linux-source-2.6.22
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้