คอมไพล์ GNOME ใช้เองด้วย JHBuild - วางแผน

5 September, 2007 - 15:14
Submitted by thep

จัดให้ตามคำขอครับ สำหรับผู้สนใจใช้ GNOME แบบ bleeding edge ซึ่งมีหลายวิธี ตามดีกรีความเป็น geek ของคุณ:

  • ใช้ distro package เช่น ใช้ ubuntu รุ่นที่ยังไม่ออก (ปัจจุบันคือ gutsy) หรือถ้าเป็น debian ก็ลองใช้จาก experimental แบบนี้อาจจะง่าย ไม่ต้องคอมไพล์เอง แต่ความสดใหม่อาจไม่เท่าวิธีอื่น
  • ใช้ GARNOME เป็นการคอมไพล์จาก released tarball เหมาะสำหรับผู้ติดตาม milestone ต่าง ๆ โดยเอาซอร์สโค้ดรุ่นล่าสุดที่ release (รวมทั้ง development branch ตั้งแต่ก่อน beta) มาคอมไพล์เอง
  • ใช้ JHBuild เป็นการคอมไพล์จาก SVN snapshot เหมาะสำหรับผู้ติดตามกระชั้นชิด และเชี่ยวชาญการแก้ปัญหาด้วยตัวเอง หรืออาจจะต้องการร่วมพัฒนาในระดับลึก

บทความนี้จะอธิบายวิธีที่ใช้ JHBuild นะครับ

วางแผนกันก่อน

การติดตั้ง GNOME จาก SVN snapshot ไว้ใช้งาน อาจจะอันตรายเกินกว่าจะเอางานในชีวิตประจำวันเข้าไปเสี่ยงด้วย จึงควรพิจารณาแยกรุ่น โดยใช้ GNOME ที่เสถียรจาก distro ทำงาน แต่แยก GNOME จาก SVN ไว้ทดสอบต่างหาก โดยขอแนะนำว่าอย่าใช้ root account หรือ sudo คอมไพล์และติดตั้ง เพราะความผิดพลาดในการ configure เพียงเล็กน้อย อาจทำให้ระบบคุณมั่วได้ ทางที่ดี ควรสร้างไดเรกทอรีสำหรับ user ธรรมดาไว้รองรับ และ build ในฐานะ user ธรรมดาเท่านั้น ซึ่งก็มีทางเลือกต่าง ๆ เช่น:

  • ติดตั้งไว้ใต้ $HOME/gnome-svn (ตั้งชื่อกันเอาเองนะครับ ถ้าไม่ชอบชื่อ gnome-svn) แล้วใช้ jhbuild shell เรียกโปรแกรมเป็นรายตัวไป วิธีนี้ใช้ในกรณีที่คุณสนใจโปรแกรมเป็นตัว ๆ ไป ไม่ได้อยากดูหน้าตาเดสก์ท็อปทั้งหมด แต่ระวังว่ามีบางโปรแกรม เช่น gedit, epiphany ที่จะตรวจหา instance ที่มีอยู่ก่อนเรียก instance ใหม่ ซึ่งถ้ามี instance เดิมอยู่ คุณจะได้หน้าต่างของโปรแกรมรุ่นของ distro ไม่ใช่รุ่นของ SVN
  • ติดตั้งไว้ใต้ $HOME/gnome-svn แล้วใช้ X session เรียก GNOME รุ่น SVN เอาขณะล็อกอิน วิธีนี้ก็เป็นไปได้ แต่ไม่ขอแนะนำ เพราะหลายครั้งที่โปรแกรมรุ่นใหม่มีการเปลี่ยนแปลงวิธี config ถ้าคุณใช้วิธีนี้ ข้อมูล gconf ของคุณจะถูกใช้ร่วมกันระหว่าง GNOME จาก distro กับ GNOME รุ่น SVN และอาจตีกันเองได้บ่อย ๆ
  • ติดตั้งไว้นอก $HOME เช่น /opt/gnome-svn หรือ /home/gnome-svn (ผมใช้อย่างหลัง เพราะได้แบ่งพาร์ทิชันสำหรับ /home ไว้ แต่ไม่ได้เตรียมเนื้อที่สำหรับ /opt ไว้) โดย chown ให้เป็นของ user ที่สั่ง build จากนั้น สร้าง user account ต่างหากเพื่อใช้เรียก GNOME จาก svn โดยเฉพาะ วิธีนี้มีข้อดีคือ คุณสามารถละเลงทุกอย่างในเดสก์ท็อปของคุณได้ระหว่างทดสอบ พังก็ลบทิ้งสร้างใหม่ได้ โดยไม่รบกวนงานปกติของคุณ

เอาล่ะ อ่านแล้วเลือกวิธีที่คุณชอบละกัน ตามความเห็นของผม คิดว่าวิธีสุดท้ายนี่แหละ ที่มีปัญหาน้อยที่สุด จากประสบการณ์ที่ผ่านมา โดยมีเกร็ดอีกอย่างหนึ่งคือ คุณไม่จำเป็นต้อง logout เพื่อเข้าไปทดสอบในอีก account หนึ่ง แต่สามารถสลับผู้ใช้โดยเลือก switch user ที่ logout dialog หรือใช้แอพเพล็ตสลับผู้ใช้ (fast-user-switch-applet) เพื่อล็อกอินในอีกดิสเพลย์หนึ่งได้ หรือจะเรียกใช้ gdm ในหน้าต่างซ้อน (Xnest/Xephr) เลยก็ได้ ซึ่งสำหรับกรณีหลัง ก็เพียงแต่เรียกเมนู Applications > System Tools > New Login in a Window หรือสั่งจาก command line:

$ gdmflexiserver --Xnest

ประเด็นหนึ่งที่คุณจะพบก็คือ เรื่องของ dbus กล่าวคือ โดยปกติ JHBuild จะ build dbus, hal, avahi จาก source ให้ ซึ่งอาจเป็นคนละรุ่นกับ distro แต่ปัญหาก็คือ distro จะเปิด dbus, hal, avahi daemon เอาไว้อยู่แล้ว และบ่อยครั้งที่โปรแกรมที่ config ไว้ให้คอมไพล์กับคนละรุ่นจะทำงานกับ daemon เหล่านี้ไม่ได้ ผลคือเรียกโปรแกรมไม่ขึ้น หรือโปรแกรม crash ไปเฉย ๆ เรื่องแบบนี้ report bug ก็ไม่ได้ด้วย เพราะเป็นความผิดของเราเอง วิธีแก้คือ config JHBuild ให้ไปใช้ dbus ของระบบเสีย ไม่ต้อง build เอง รายละเอียดจะกล่าวต่อไป

ตอนหน้ามาลงมือกันครับ

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <img> <blockquote> <h3> <h4>
  • Lines and paragraphs break automatically.

More information about formatting options

Captcha
This question is used to make sure you are a human visitor and to prevent spam submissions.
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.