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

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

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

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

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

ปัญหาจะมีสองแบบ คือ error จะขึ้นต้นด้วย E: และ warning จะขึ้นต้นด้วย W: ก็เหมือนกับการเขียนโปรแกรมทั่วไป คุณไม่ควรให้มี error เหลืออยู่ และถ้าจะอัปโหลดเข้าเดเบียนอย่างเป็นทางการ ก็ไม่ควรมี warning เหลืออยู่เลย

สังเกตว่าแฟ้ม *.changes นั้น จะถูกสร้างขณะ build แพกเกจ เป็นการสรุปการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในการ build ครั้งนี้ เพื่อใช้ในการอัปโหลดเข้าแหล่งของเดเบียนต่อไป เนื้อหาในนั้นจะประกอบด้วยข้อมูลของการ build, รายการ changelog ของรุ่นที่ build และรายการแฟ้มที่จะอัปโหลดทั้งหมด (ได้แก่ debian patch และ *.deb ที่เป็นผลลัพธ์ และถ้าเป็น release *-1 ที่ต้องอัปโหลด *.orig.tar.gz ด้วย ก็จะมีเพิ่มด้วย) ดังนั้น การสั่ง lintian/linda กับแฟ้ม *.changes จึงเป็นการตรวจสอบทุกแฟ้มที่เกี่ยวข้องกับการอัปโหลด มีกี่แพกเกจก็ตรวจสอบครบหมด

หากคุณจะตรวจสอบแยกรายการ ก็ทำได้ เช่น เมื่อจะตรวจสอบ binary package ก็สั่ง lintian/linda กับ *.deb ได้เลย:

$ lintian -i foo.deb
$ linda -i foo.deb

หรือถ้าจะตรวจสอบซอร์สของแพกเกจ ก็สั่ง lintian/linda กับ *.dsc:

$ lintian -i foo.dsc
$ linda -i foo.dsc

lintian และ linda อยู่ในแพกเกจชื่อเดียวกับโปรแกรม (คือ lintian และ linda ตามลำดับ)

ด้วยมาตรฐานคุณภาพของเดเบียน ขั้นตอนการตรวจสอบคุณภาพนี้จึงไม่ใช่แค่ส่วนเสริม แต่กลายเป็นเรื่องจำเป็นเลยทีเดียว และเพื่ออำนวยความสะดวกแก่ผู้ดูแลแพกเกจ จึงมีสคริปต์ตัวหนึ่งที่ช่วยเรียกทุกขั้นตอน ตั้งแต่ build แพกเกจ, ตรวจสอบคุณภาพด้วย lintian/linda และเซ็นกำกับแฟ้มอัปโหลดด้วย GPG เสร็จในคำสั่งเดียว คือ debuild (อยู่ในแพกเกจ devscripts)

ดังนั้น จึงขอแนะนำผู้ที่จะ build แพกเกจเพื่อเผยแพร่ ว่าควรใช้ debuild ในการสร้างแพกเกจ แทนการสั่ง dpkg-buildpackage โดยตรง วิธีสั่งก็แค่สั่งแบบนี้ที่ไดเรกทอรีซอร์ส:

$ debuild

ถ้าคุณต้องการเซ็น GPG กำกับแฟ้ม *.changes และ *.dsc เพื่อการอัปโหลด ก็ทำได้โดยเพิ่มตัวเลือก -k ตามด้วย key ID เช่น:

$ debuild -kkey-id

แต่จะให้ดี ก็กำหนดแบบถาวรไว้ใน /etc/devscripts.conf หรือ ~/.devscripts เลย เพื่อจะได้ไม่ต้องเพิ่มตัวเลือก -k ทุกครั้งที่ build โดยกำหนดรายการนี้:

DEBSIGN_KEYID="key-id"

ใน New Maintainers' Guide ยังได้แนะนำอีกรายการหนึ่ง ซึ่งมีประโยชน์สำหรับคนที่ build แพกเกจภายใน working copy ของ CVS หรือ SVN:

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -ICVS -I.svn"

อาจจะเพิ่ม -I.git หรืออะไรก็แล้วแต่ ตามระบบ version control ที่คุณใช้ จะเป็นการส่งตัวเลือกผ่าน debuild ไปให้ dpkg-buildpackage เสมอ ว่าให้ข้ามไดเรกทอรีของระบบ version control ขณะเก็บแฟ้มต่าง ๆ เข้าแพกเกจ (lintian/linda จะบ่น ถ้าพบไดเรกทอรีดังกล่าวปะปนไปในแพกเกจด้วย)

เครื่องมือ build และตรวจสอบคุณภาพของเดเบียนยังไม่จบแค่นี้ ตอนหน้าจะพูดถึงเครื่องมือ build อีกตัวหนึ่ง ที่ถ้าคุณดูแลแพกเกจไประยะหนึ่ง จะต้องพบกรณีที่ทำให้นึกถึงเครื่องมือแบบนี้ ไม่วันใดก็วันหนึ่ง

Topic: 
Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้