บันทึกกันลืม Build Debian Package

กันลืมเรื่อง build debian package สำหรับการสร้าง package ตัวเอง ไม่เกี่ยวกับดึง package source จาก repository นะจ๊ะ
สร้างโครงสร้างของ package
dh_make --createorig -e <your-email> -p <package-name>_<version>
แก้โน่นนี่ในไดเรคทอรี debian จะ make อะไร โยนไฟล์ไว้ที่ไหนก็จัดไป แก้แล้ว เพิ่ม change log
dch -i
ถ้าไม่มี key ก็อย่าลืมสร้าง gpg key
gpg --gen-key
ดูว่า gpg key id อะไร
gpg --list-keys
ดูเลข key จากนั้นสั่ง build package พร้อม sign key ไปด้วย
debuild -rfakeroot -k<gpgkey-id>
 

ประสบการณ์ SUN Fire V210/V240 บน Debian 5.06

ผมกับมะระ (gumara) เดินหา storage เพื่อใช้ในงาน backup เซิร์ฟเวอร์ ThaiOpenSource.org, Suriyan, Chantra และ Repository ที่อยู่ในเครื่องเดิม เนื่องจากโดนไล่ที่จาก CAT IDC มาเร่ร่อนอยู่ใน Data Center ของ SIPA เพราะไม่มีที่จะวางเครื่องจริงๆ ครับ ก็เลยทำใจให้ต้องเข้ามาที่สำนักงาน ซึ่งก็ได้โอกาส upgrade จาก Ubuntu 8.10 ไปเป็น 10.10 ไปในตัว ช่วงพักผ่อนระหว่างรอ ทีมงาน MIS ช่วยจัดการเรื่อง DMZ, Firewall, DNS ฯลฯ ก็พยายามหา share storage มาสำรองไฟล์ (เว็บ, ฐานข้อมูล, ไฟล์งาน, คลังซอฟต์แวร์) ซึ่งเสียงตอบกลับจากฝ่าย MIS ส่วนใหญ่คือ “ไม่มี!@#$@$%” แกมบอกว่ามีเครื่อง SUN อยู่ 3 ตัว ถ้าทำให้มันใช้งานได้ก็เอาไปเล้ยยยยย เหมือนหาเรื่องใส่ตัว ที่จริงแล้วไม่คิดจะยุ่งกับเจ้าเครื่อง SUN ซักเท่าไร แต่ด้วยความอยากรู้ ก็เลยจัดการซะ!
เครื่อง SUN ที่เอามาให้ผมกับมะระ คือ SUN Fire V120, V210 และ V240 ผมเคยจับ SUN มาก่อนแต่รุ่นเก่ากว่านี้มาก CPU Sparc เหมือนกับเจ้า 3 เครื่องนี้ นั่นหมายความว่าระบบปฏิบัติการที่ติดตั้งไว้เป็น Solaris 9 ตัวเครื่องยับเยินนิดหน่อย ฝาหน้าเครื่องดูหลวมๆ ปิดไม่ค่อยอยู่ ฮาร์ดิสโดนแงะแล้วใส่ไม่สนิท เลย ECC Error อยู่ตลอด ทำให้เครื่อง boot ไม่ได้ ซึ่งหลังจากพยายามยัดฮาร์ดดิสก์ได้ถูกวิธี และทำให้เครื่อง boot ได้ ก็พบกับ Solaris 9 สมใจ แต่มัน boot ไม่เรียบร้อยเพราะสาย SCSI ที่ต่อหลังเครื่อง V210 ไป V240 ไม่มี และไม่มีรหัสผ่าน Solaris ด้วย ทำให้ต้องติดตั้งกันใหม่หมด เช่นเคย มีกล่อง Solaris 9 มีคู่มือเครื่องอยู่นิดหน่อย แต่คู่มือติดตั้ง Solaris 9 ไม่มี และที่สำคัญแผ่น Solaris 9 ไม่มี! ทำให้ต้องเลือก Linux Distribution สักตัวนึงมาติดตั้งให้ได้ก่อน Linux ที่เลือกคือ Debian เพราะมีอยู่ตัวเดียวที่ใช้เป็นและสามารถติดตั้งบน CPU Sparc ได้ ปัญหาต่อมาคือทำยังไงให้มัน boot cdrom ???
ผมพยายามอยู่นาน อ่านวิธีจากคู่มือซึ่งพูดถึง service console และอื่นๆ แต่ไม่พูดถึง OpenBoot เลยสักกะตัว ได้ความช่วยเหลือจากทีมงาน Sun Microsystem ประเทศไทย ในการ break เข้าโหมด ok PROM ผมใช้คีย์บอร์ดของเครื่อง SUN กดปุ่ม Stop+A (ถ้าใช้ คีย์บอร์ดของเครื่อง PC กดปุ่ม Ctrl+Break) เพื่อ break Solaris เข้าโหมด OpenBoot หรือ ok PROM ทำให้ใช้คำสั่ง boot cdrom ได้ ปัญหาเรื่อง boot cdrom จึงหมดไป ปัญหาถัดมาคือ Software RAID สามารถใช้งานได้ แต่ V210 มีฮาร์ดดิสก์อยู่แค่ 2 ลูก ขนาด 36GB นั่นคือจะทำ RAID ก็ได้แค่ 0 กับ 1 ถ้าไม่ทำเลยก็ต้องแบ่งออกเป็น 2 ลูก กรณีนี้เครื่องไม่ทำ LVM และร้ายกว่านั้น RAID 0 ติดตั้ง SILO ไม่ได้ ทำให้ boot เครื่องไม่ได้ 😛 จึงทำได้แต่ RAID 1 ถึงจะ boot ได้ Continue reading ประสบการณ์ SUN Fire V210/V240 บน Debian 5.06

สร้าง Meta Package สำหรับ Debian/Ubuntu กัน

ได้อานิสงฆ์มาจากการไปเรียน Training 11 คุณครูหมีเท็ดดี้บอกแว๊บๆ ว่ามีเครื่องมือในการสร้าง Meta Package ได้ง่ายๆ ผมเองก้อไม่ได้สนใจอะไรเพราะชอบ build deb แบบดุ้นๆ เพิ่งจะมาได้ดูเมื่อ 2 วันที่แล้วนี่เอง ลองเล่นดูก้อพบว่า เอ๊ะมันง่ายเกินไปหรือเปล่า เอาล่ะโปรแกรมที่ช่วยเราทำ Meta Package แบบง่ายๆ นี้ชื่อว่า equivs ใครยังไม่มีก้อติดตั้งได้เลยครับ

sudo apt-get install equivs

สำหรับ การใช้งานก้อไม่ยากครับ equivs จะมีเครื่องมือสร้าง control file คล้ายๆ กับการสร้างไฟล์ spec ไฟล์ของแพคเกจแบบ RPM แต่ไฟล์ที่ได้นี้จะ compile ได้ด้วย equivs ไม่ได้ครับ เรามาลองสร้าง control ไฟล์กันก่อนครับ สั่งสร้าง control ไฟล์โดยใช้คำสั่ง

equivs-control package-thai-setup.ctl

ลืมบอกไปว่าเราจะสร้างแพคเกจติดตั้งภาษาไทย ฟอนต์ และอื่นๆ ในไฟล์ package-thai-setup.ctl ที่เราได้ก้อจะมีหน้าตาอย่างนี้ครับ

### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: <package name; defaults to equivs-dummy>
# Version: <enter version here; defaults to 1.0>
# Maintainer: Your Name <yourname@example.com>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
# Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph

ซึ่ง เป็น template ง่ายๆ ให้เราแก้ไขได้ เอาล่ะสิ่งที่เราต้องทำคือใส่ชื่อแพคเกจ เวอร์ชั่น ใครเป็นคนดูแล เพคเกจนี้ต้องมีแพคเกจอะไรบ้าง (ในส่วน depends) กำหนด Architecture, Copyright และใส่รายละเอียดว่าแพคเกจที่เราสร้างคือแพคเกจเกี่ยวกับอะไร ผมใส่รายละเอียดได้แบบนี้ครับ

### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: package-thai-setup
Version: 1.0ubuntu1
Maintainer: Anuchit Chalothorn <anoochit@gmail.com>
# Pre-Depends: <comma-separated list of packages>
Depends: language-pack-th-base, language-pack-th, language-pack-gnome-th-base, language-pack-gnome-th, language-support-fonts-th, language-support-input-th, language-support-translations-th, language-support-writing-th
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: i386
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
# Extra-Files: <comma-separated list of additional files for the doc directory>
Description: setup for Thai language package
This package for Thai language package setup for all Thai locale, input method and display.

จากนั้นก้อ สั่ง compile package กันได้เลยโดยใช้คำสั่ง

equivs-build package-thai-setup.ctl

เรา ก้อจะได้ไฟล์ package-thai-setup_1.0ubuntu1_i386.deb ออกมาแล้ว หากเราสั่งติดตั้งแพคเกจนี้ ตัวติดตั้งก้อจะดาวน์โหลดแพคเกจที่เป็น depends มาให้เรา ซึ่งถือว่าเป็นการสร้างแพคเกจ .deb แบบง่ายสุดๆ ซึ่งสามารถใช้งานได้กับ debian และ ubuntu เลยล่ะ 🙂