Theppitak's blog

My personal blog.

02 ตุลาคม 2549

New Pango Modules Handling

หลายวันที่ผ่านมา มีแต่งานเอกสาร เกี่ยวกับการ follow up ISO draft สองฉบับ แล้วก็ค้นข้อมูลเตรียมเอกสารบางอย่าง แต่ก่อนหน้านั้น ก็มี debian bug ตัวหนึ่งสำหรับ pango-libthai ที่ request ให้ build package ใหม่ตามวิธีการใหม่ในการจัดการ pango modules ใน debian

ติดตาม changelog หาต้นตอ ก็ไปพบว่า เรื่องนี้มีต้นตอมาจาก Ubuntu #41297 ที่พบขณะ upgrade Ubuntu ผ่าน GUI ซึ่งใช้ debconf-gnome frontend โดยมีการ upgrade pango แบบข้าม major version และมีการเปลี่ยน path ที่เก็บ pango modules แต่ไฟล์ pango.modules ที่ใช้ลิสต์ pango modules ที่ register ไว้ทั้งหมด อยู่ใน /etc และ update ขณะ postinst ทำให้เกิดช่วงสูญญากาศขณะ unpack pango แต่ยังไม่ postinst ที่ทำให้ pango ไม่ทำงาน และ debconf-gnome จึงไม่สามารถทำงานได้

mvo เสนอวิธีแก้ โดยวิเคราะห์ว่า ไฟล์ pango.modules ไม่ควรอยู่ที่ /etc ซึ่งเป็นที่เก็บ config สำหรับให้ admin ปรับแต่งระบบ ในขณะที่ไฟล์นี้ จะถูกเขียนทับเสมอ ถ้า admin ปรับแต่งอะไรไป ก็จะถูกทับตอน upgrade อยู่ดี ตรงกันข้าม แพกเกจควรจะเตรียม pango.modules ไว้ก่อนแล้ว เพื่อจะได้ให้ pango ใช้การได้ตั้งแต่ unpack เลย โดย mvo เสนอหลายวิธี และเลือกวิธีที่เปลี่ยนแปลงน้อยที่สุด โดยย้ายไฟล์ pango.modules ไปไว้ที่ /var/lib/pango/pango.modules แล้วให้มี script update-pango-modules มาเขียนทับอีกที ในกรณีที่มีแพกเกจอื่นที่มี pango module (เช่น pango-libthai ของเรา) และใช้วิธีนี้ใน Ubuntu

แต่วิธีที่ debian เลือกใช้ (จากหนึ่งในวิธีที่ mvo เสนอ) เป็นวิธีที่จัดระเบียบมากกว่านั้น โดย patch pango ให้อ่าน modules file ทั้งหลายใน /usr/lib/pango/<MODULE_VERSION>/module-files.d/ แทนที่จะอ่านแค่ pango.modules ไฟล์เดียว แล้วให้แพกเกจที่เตรียม pango module ไปวางไฟล์ *.modules ที่ลิสต์ module ของตัวเองไว้ในนั้น โดยผ่านคำสั่ง dh_pangomodules สำหรับการ build deb ที่แพกเกจ pango เตรียมไว้ให้ ก็เลยเป็นเหตุให้ผมต้อง build pango-libthai 0.1.6-2 สำหรับ debian ให้ใช้วิธีใหม่นี้ (ซึ่งปรากฏว่าง่ายและลงตัวมากๆ)

นอกจากจะเลือกวิธีที่ยากแต่สวยแล้ว maintainer ของ debian ยังได้ส่งเรื่องต่อเข้าที่ต้นน้ำ เพื่อแก้ไขที่ pango โดยตรงด้วย (GNOME Bug #355985) นี่แหละคร้าบ ตัวอย่างบรรยากาศการทำงานของ Debian เขาละ ซึ่งเครดิตก็ต้องยกให้ Ubuntu เขาด้วย

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem