packaging

About deb package building

ดาวน์โหลด source package แบบ debian

วันนี้ขอพูดถึงเรื่องเล็ก ๆ ที่หลายคนมองไม่เห็น เกี่ยวกับการดาวน์โหลดและแตกซอร์สของ 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

สร้างแพกเกจแบบขาวบริสุทธิ์ด้วย pbuilder

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

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

การ build ด้วย debuild เสมอ จะช่วยให้แน่ใจได้ว่าไม่พลาดอะไรไป ไม่ว่าจะเป็น option ต่าง ๆ ที่ใช้ build หรือเป็นความผิดพลาดใน rules เอง หรือกระทั่งความผิดพลาดที่เกิดจากการเซ็ตระบบระหว่าง build เช่น การเผลอไปลิงก์กับไลบรารีใน /usr/local/lib ที่คุณคอมไพล์จากซอร์สเอง แทนที่จะลิงก์กับไลบรารีของ debian ซึ่งความจู้จี้ของลินดาจะช่วยชีวิตคุณไว้ได้ แต่เมื่อคุณ maintain แพกเกจไประยะหนึ่ง ก็จะพบกับกรณีบางอย่าง ที่ทำให้นึกถึงเครื่องมือช่วยเพิ่มเติมอีก เช่น

ตรวจสอบคุณภาพแพกเกจด้วย lintian/linda

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

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

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

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

Debian Packaging

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

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

การ build debian package

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

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

$ apt-get source package

จะได้ส่วนประกอบของ source ทั้งหมดสำหรับ build แพกเกจ (ถ้าไม่สำเร็จ ลองตรวจดู /etc/apt/sources.list ว่ามีบรรทัด deb-src หรือเปล่า) ซึ่งโดยปกติ source ดังกล่าวจะประกอบด้วย:

คอมไพล์เคอร์เนลสไตล์เดเบียน

เดเบียนมี 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
Syndicate content
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้