This is G o o g l e's cache of http://www.debianclub.org/node/69 as retrieved on 21 Jan 2007 02:48:05 GMT.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only.
To link to or bookmark this page, use the following url: http://www.google.com/search?hl=en&q=cache%3Ahttp%3A%2F%2Fwww.debianclub.org%2Fnode%2F69&btnG=Search


Google is neither affiliated with the authors of this page nor responsible for its content.

User login

Links

debianclub.com
debian.org
ubuntuclub.com
blognone.com

Syndicate

Syndicate content

การสร้าง 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 แพกเกจระดับคุณภาพ เพื่อใช้เผยแพร่ จะมีเครื่องมืออื่นที่น่าใช้กว่านี้อีก ซึ่งจะกล่าวถึงในตอนต่อไป

ต้องการทำ PC Embedded System เริ่มต้นไงดีครับ

ต้องการ ทำ PC Embedded System จะเริ่มต้นไงดีครับ เคยใช้งาน และติดตั้ง Linux ทั่วไปแต่ไม่ไม่เคยทำ Linux Embedded หาข้อมูลจาก internet ก็ไม่รู้จะเริ่มตรงไหน มีแหล่งข้อมูลที่สามารถเริ่มต้นการเรียนรู้ และพัฒนา หรือ หากมีชาว Debain Club ท่านใดสามารถทำได้ หรือยินดีที่จะเป็นที่ปรึกษา บ้างมั๊ยครับ

OpenMan

กำัลัง...จะได้เริ่มครับ

ตอนนี้ที่บริษัทที่ผมทำงานอยู่ มี OMAP5912 ให้ลองเล่นครับ ก็ดู ๆ อยู่เหมือนกันว่าจะเริ่มยังไงดี

Embedded Debian
OpenEmbedded

แต่ยังไม่ได้เริ่มอะไรเป็นชิ้นเป็นอันเท่าไรครับ สงสัยต้องคอยแลกเปลี่ยนความรู้กันต่อ ๆ ไป :)


**********************
Key ID: D4CEFD37
Fingerprint: 1ED3 27F6 48C8 5C9D 4285 F24D D64E C0AF D4CE FD37
**********************