การ 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 ดังกล่าวจะประกอบด้วย:

  • แฟ้ม package_version-release.dsc เป็นแฟ้มที่ list แฟ้มทั้งหมดที่เกี่ยวข้อง
  • แฟ้ม package_version.orig.tar.gz เป็นซอร์สโค้ดต้นฉบับจากต้นน้ำ (upstream) โดยยังไม่มีการแก้ไขใด ๆ บางครั้งเรียกว่า pristine source (ซอร์สบริสุทธิ์)
  • แฟ้ม package_version-release.diff.gz เป็น patch ที่จะเพิ่มกฎการ build deb รวมทั้ง patch ที่เปลี่ยนแปลงแก้ไขซอร์สต้นฉบับตามความจำเป็นสำหรับเดเบียน

สังเกตว่าเดเบียนจะแยก pristine source กับ debian patch จากกันต่างหาก ซึ่งจะมีประโยชน์สองทาง ทางแรกคือ เพื่อให้ชัดเจน ว่าเดเบียนแก้ไขอะไรไปบ้าง ถ้าพูดถึงข้อกฎหมายก็จะดูได้ง่าย รวมทั้งช่วยให้สะดวกในการตรวจสอบส่วนที่ยังไม่รวมเข้าในซอร์สต้นน้ำด้วย ส่วนอีกทางหนึ่ง คือประหยัดเนื้อที่ในแหล่ง mirror (ถ้าเทียบกับระบบอย่าง rpm) เพราะ release ต่าง ๆ ที่ใช้ upstream version เดียวกัน จะเก็บ pristine source เพียงชุดเดียวใน mirror และแต่ละ release จะต่างกันแค่ส่วน debian patch เท่านั้น

เมื่อได้แฟ้มเหล่านี้มาแล้ว apt-get ก็จะแตก source tarball พร้อมกับ apply patch ให้อย่างเรียบร้อย ซึ่งเมื่อเข้าไปดูเนื้อหาข้างใน จะมีไดเรกทอรี debian/ ซึ่งเก็บข้อมูลต่าง ๆ สำหรับการ build deb โดยแฟ้มที่เป็นศูนย์กลางของกลไกการ build จะอยู่ที่ debian/rules ซึ่งเนื้อหาก็เป็น Makefile ธรรมดานี่เอง แต่จะมี target ชุดหนึ่งที่เดเบียนกำหนดไว้สำหรับการ build แพกเกจ ส่วนแฟ้มอื่น ๆ ที่สำคัญก็คือ debian/control ซึ่งเก็บ metadata ของแพกเกจ เช่น ชื่อแพกเกจ คำบรรยาย ความสัมพันธ์กับแพกเกจอื่น ฯลฯ และ debian/changelog ซึ่งเก็บบันทึกการเปลี่ยนแปลงของ release ต่าง ๆ และ เดเบียนจะถือข้อมูลล่าสุดใน debian/changelog เป็นสำคัญ ในการกำหนดรุ่นของแพกเกจ

สำรวจพอคร่าว ๆ แล้ว ก่อนลงมือ build ก็ทำให้แน่ใจเสียก่อน ว่ามีสิ่งที่ต้องใช้ครบ โดยสั่ง:

# apt-get build-dep package

เป็นการติดตั้งแพกเกจอื่น ๆ ที่จำเป็นสำหรับการ build แพกเกจที่กำหนด จากนั้น เมื่อได้ครบแล้ว ก็ลงมือ build กันเลย คำสั่งที่ใช้ก็คือ dpkg-buildpackage (อยู่ในแพกเกจ dpkg-dev) โดย cd ไปที่ไดเรกทอรีบนสุดของซอร์สโค้ดที่แตกออกมา แล้วก็สั่ง:

$ dpkg-buildpackage -rfakeroot

เมื่อ build เสร็จ จะได้แฟ้ม *.deb อยู่ที่ไดเรกทอรีถัดขึ้นไป

จบตอนแรกนี้ คุณก็สามารถ build debian package จากซอร์สเองได้แล้ว แต่ถ้าคุณต้องการ build แพกเกจระดับคุณภาพ เพื่อใช้เผยแพร่ จะมีเครื่องมืออื่นที่น่าใช้กว่านี้อีก ซึ่งจะกล่าวถึงในตอนต่อไป

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <blockquote> <img> <h3> <h4> <h5>
  • Lines and paragraphs break automatically.
  • E-Mail addresses are hidden with reCAPTCHA Mailhide.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.