Debian Technology
A Quick Review
เทพพิทักษ์ การุญบุญญานันท์
เนื้อหา
- จุดเด่นของเดเบียน
- ปรัชญาซอฟต์แวร์เสรีและชุมชน
- Debian Policy
- Debian Suites
- ระบบแพกเกจ: สำหรับผู้ใช้
- ระบบแพกเกจ: สำหรับผู้ดูแลแพกเกจ
- ระบบแพกเกจ: Integration
- Facilities
จุดเด่นของ Debian
- ปรัชญาซอฟต์แวร์เสรี และดูแลโดยชุมชน
- อเนกประสงค์ แต่เชื่อมรวมกันเป็นอย่างดี
- คุณภาพของแพกเกจ
- ปริมาณของแพกเกจ
- การดูแลระบบ
- การสนับสนุนสถาปัตยกรรมต่างๆ
- การอัปเกรดและแก้ปัญหาระบบความปลอดภัย
ปรัชญาซอฟต์แวร์เสรีและชุมชน
- Social Contract
- Debian จะ free 100%
- Debian จะช่วยชุมชนซอฟต์แวร์เสรีกลับคืน
- Debian จะโปร่งใส
- Debian จะเปิดกว้างต่อการใช้งานของผู้ใช้ รวมทั้ง:
- การใช้ร่วมกับซอฟต์แวร์ไม่เสรี
- การสร้าง distribution จาก Debian
โดยไม่มีค่าใช้จ่ายเพิ่มเติม
- งานที่ไม่เสรีตามนิยามของ Debian จะถูกคัดแยกไว้ใน "contrib" และ "non-free"
และไม่ใช่ส่วนหนึ่งของ Debian
ปรัชญาซอฟต์แวร์เสรีและชุมชน
Debian Policy
- ข้อกำหนดการทำงานของ Debian
- จุดประสงค์
- หัวใจของการทำงานร่วมกันในชุมชนอย่างมีระบบ
- กำหนดโครงสร้างของระบบแพกเกจและคลังแพกเกจ
- กำหนดโครงสร้างของ file system และระบบย่อยต่างๆ
- เป็นจุดแข็งที่แท้จริงของ Debian
- APT เป็นเพียงยอดภูเขาน้ำแข็ง!
Debian Suites
- ปัจจุบัน
- stable - นิ่ง, ปล่อยแล้ว, มี security update
- testing - ไม่นิ่ง, เตรียมปล่อย, มี security update
- unstable - ไม่นิ่ง, ล่าสุด, ไม่มี security update (แต่มี fix)
- experimental - แพกเกจทดสอบก่อนเข้าสู่ unstable
- ผลิตภัณฑ์
- sarge, etch, ..., sid (ชื่อตาม Toy Story)
Debian Suites
- การเคลื่อนของแพกเกจ
- แพกเกจใหม่เข้าที่ unstable
- แพกเกจอยู่ใน unstable ครบกำหนด → ย้ายเข้า testing
- ถึงกำหนด → freeze testing ทีละส่วน
- freeze หมด → testing กลายเป็น frozen
- ถึงกำหนด release → stable กลายเป็น oldstable, frozen กลายเป็น stable, สร้างกิ่ง testing ใหม่
- unstable = sid เสมอ
- Ubuntu
- sync main กับ sid เป็นครั้งคราว โดยเฉพาะเมื่อใกล้ release
- maintain universe, multiverse ต่างหากจาก debian
ระบบแพกเกจ: สำหรับผู้ใช้
การติดตั้ง-ถอดถอนแพกเกจ
- dpkg
- เครื่องมือระดับล่างสำหรับติดตั้ง-ถอดถอนแพกเกจ
- apt
- ติดตั้ง-ถอดถอนแพกเกจจากแหล่ง + dependency resolution
- aptitude
- ncurses interface + command line
- ถอดถอนแพกเกจกำพร้าโดยอัตโนมัติ
(แพกเกจกำพร้า = แพกเกจ auto-install ที่ไม่มีใคร depends)
- synaptic
ระบบแพกเกจ: สำหรับผู้ใช้
เครื่องมือเสริม
- apt-listchanges
- แสดง changelog ของรายการที่ upgrade
- deborphan
- ค้นหาแพกเกจ library ที่ไม่มีใครใช้ เพื่อลบทิ้ง
- ไม่จำเป็น ถ้าใช้ aptitude
- dlocate
- ค้นหาแพกเกจเจ้าของไฟล์อย่างเร็ว ด้วย GNU locate
- ใช้แทน dpkg -S
- apt-zip
- การฝากดาวน์โหลดแพกเกจผ่านเครื่องอื่น
ระบบแพกเกจ: สำหรับผู้ใช้
การใช้ประโยชน์จากแพกเกจที่ดาวน์โหลดมา
- apt-move
- debian-cd
- ตัดแผ่นซีดีติดตั้งจาก local pool
- boot-cd
- สร้าง live CD จาก local pool
- jigdo (jigsaw download)
- ดาวน์โหลด iso image โดยเติมแพกเกจจาก local pool
ระบบแพกเกจ: สำหรับผู้ดูแลแพกเกจ
เครื่องมือสร้างแพกเกจ
- dh-make
- ช่วยสร้าง debian/ dir สำหรับ source ใหม่
- dpkg-buildpackage
- เครื่องมือระดับล่างสำหรับ build แพกเกจ
- debuild (package: devscripts)
- wrapper สำหรับสร้าง ตรวจสอบ และเซ็นกำกับแพกเกจ
- สร้างไฟล์ที่จำเป็นสำหรับการ upload เข้า debian pool
- pbuilder
- เครื่องมือสร้างแพกเกจใน chroot base system
- ป้องกันปัญหา Fail To Build From Source (FTBFS)
ระบบแพกเกจ: สำหรับผู้ดูแลแพกเกจ
เครื่องมือประกอบ
- devscripts
- script อรรถประโยชน์สำหรับการ build deb เช่น
- dch - maintain debian/changelog
- debdiff - เปรียบเทียบรายการไฟล์ระหว่างสองแพกเกจ
- debhelper
- รวมคำสั่งสำหรับขั้นตอนต่างๆ ใน debian/rules
- cdbs (Common Debian Build System)
- Makefile fragment สำหรับใช้ใน debian/rules ของแพกเกจชนิดต่างๆ
- dpatch
ระบบแพกเกจ: สำหรับผู้ดูแลแพกเกจ
เครื่องมือตรวจสอบคุณภาพ
- lintian
- เครื่องมือตรวจสอบปัญหาต่างๆ ในแพกเกจ
- linda
- เครื่องมือตรวจสอบปัญหาต่างๆ ในแพกเกจ (อีกตัวหนึ่ง)
- piuparts
- package installation, upgrading and removal testing tool
- ทดสอบการติดตั้ง อัปเกรด ถอดถอนแพกเกจใน chroot base system
ระบบแพกเกจ: Integration
- ความสัมพันธ์ระหว่างแพกเกจ
- Depends
- Recommends
- Suggests
- Pre-Depends
- Build-Depends
- Build-Depends-Indep
- Enhances
- Conflicts
- Replaces
ระบบแพกเกจ: Integration
- Virtual package
- ชื่อแพกเกจในรูปทั่วไป เช่น ftp-server, mail-transport-agent, x-window-manager
- แพกเกจที่ต้องการใช้ → Depends: ftp-server
- แพกเกจที่จัดเตรียมให้ (เช่น proftpd, wu-ftpd) → Provides: ftp-server
- Alternatives
- คำสั่งเดียวกันมาจากหลายแพกเกจ ติดตั้งพร้อมกันได้
- /usr/bin/editor อาจเป็น vim, emacs, nano, ...
- แพกเกจ: update-alternatives [--install | --remove]
- ผู้ใช้: update-alternatives --config name
ระบบแพกเกจ: Integration
ระบบเชื่อมผสม
- defoma (Debian Font Manager)
- ระบบฟอนต์มีหลากหลาย: X Window, Ghostscript
(ก่อนมี fontconfig ยิ่งหลากหลายกว่านี้)
- แพกเกจฟอนต์:
- ติดตั้งฟอนต์พร้อม defoma hint บรรยายฟอนต์ที่ติดตั้ง
- register ฟอนต์กับ defoma ด้วย defoma-font
(ใช้ dh_installdefoma ใน debian/rules → สร้าง postinst ให้โดยอัตโนมัติ)
- แพกเกจที่ใช้ฟอนต์:
- ติดตั้ง defoma rule สำหรับเชื่อม config เข้ากับฟอนต์ของ defoma
ระบบแพกเกจ: Integration
ระบบเชื่อมผสม
- doc-base
- เอกสารประกอบมีหลายรูปแบบ: HTML, PDF ฯลฯ
- แพกเกจ: เตรียมไฟล์ doc-base บรรยาย metadata ลงทะเบียนไว้กับ doc-base
- front-end สามารถอ่านเอกสารทั้งหมดแยกหมวดผ่าน web browser ได้:
- ทำหน้าที่คล้าย scrollkeeper บน GNOME, KDE
ระบบแพกเกจ: Integration
เครื่องมือช่วย build package องค์ประกอบย่อย
- debhelper command
- คำสั่ง dh_* พิเศษนอก debhelper; อยู่ในแพกเกจแกน
- เช่น dh_installtex (tex-common), dh_installxmlcatalog (xml-core),
dh_pangomodules (libpango1.0-dev)
- CDBS (Common Debian Build System)
- Makefile fragment สำหรับ include ใน debian/rules
- แพกเกจองค์ประกอบย่อย สามารถใช้ใน debian/rules ได้:
- ย่นย่อ ลดความผิดพลาด
- ง่ายสำหรับ transition
Facilities
การอัปโหลด
- การอัปโหลด
- dupload/dput - เครื่องมืออัปโหลดแพกเกจเข้า debian
- เฉพาะ DD เท่านั้นที่อัปโหลดได้
- non-DD - ติดต่อขอให้ DD sponsor upload ให้
Facilities
Auto Builder
- buildd.debian.org
- pool ของเครื่องสำหรับ build deb สำหรับ arch ต่างๆ โดยอัตโนมัติ
- หนึ่งวันหลังจากแพกเกจเข้า incoming → buildd build และ อัปโหลด deb ของ arch อื่นๆ ให้
- แพกเกจที่ build ไม่ผ่าน เพราะปัญหา dependency → เมื่อมีความเปลี่ยนแปลง buildd จะ build และอัปโหลด binary NMU (binNMU) ให้โดยอัตโนมัติ
Facilities
Bug Tracking System
- bugs.debian.org
- ระบบติดตาม bug ของ debian
- ทำงานผ่าน mail เป็นหลัก โดยมี archive ให้ดูผ่านเว็บ
- reportbug - เครื่องมือรายงาน bug สำหรับผู้ใช้
- ผู้ดูแลแพกเกจ ได้รับเมลแจ้งการเปลี่ยนแปลงใน bug
- ตอบ และเปลี่ยนสถานะของ bug ผ่านเมล
- ปิด bug ด้วยการระบุใน changelog เมื่ออัปโหลด (ftp-master ติดต่อ BTS ปิด bug ให้โดยอัตโนมัติ)
Facilities
Quality Assurance
- qa.debian.org
- ระบบตรวจสอบคุณภาพ ติดตามปัญหาในแพกเกจต่างๆ
- สรุปสถานะ, รายการ bug, buildd log, upstream watch ของแพกเกจต่างๆ
- บันทึกประวัติ, ติดตามการเปลี่ยนแปลงของแพกเกจต่างๆ อย่างละเอียด
- ตรวจหาแพกเกจที่ขาด man page
- ติดตาม bug ที่ผู้ดูแลร้องขอความช่วยเหลือ
- ติดตามแพกเกจกำพร้า และซอฟต์แวร์ใหม่ที่มีผู้ต้องการเพิ่มใน debian
- ฯลฯ