- Fedora กำลังผลักดันการเปลี่ยนแปลงใน Fedora 43 เพื่อทำให้ 99% ของแพ็กเกจทั้งหมดสามารถสร้างซ้ำได้
- จากการปรับปรุงโครงสร้างพื้นฐานเดิม ทำได้ถึง 90% แล้ว และมีแผนจะผลักดันให้ผู้ดูแลแพ็กเกจมองปัญหาที่เหลือเป็นบั๊กและแก้ไข
- เป้าหมายคือเสริมความปลอดภัยและยกระดับคุณภาพแพ็กเกจ พร้อมมีแผนนำเครื่องมือตรวจสอบอิสระอย่าง rebuilderd มาใช้
ภาพรวมของ Reproducible Builds ในงานบิลด์โอเพนซอร์ส
- 'การบิลด์แบบสร้างซ้ำได้' มีความสำคัญมากขึ้นในการเสริมความปลอดภัยและตรวจสอบความสมบูรณ์ของซอฟต์แวร์โอเพนซอร์ส
- การบิลด์แบบสร้างซ้ำได้คือการบิลด์ที่ใครก็ตามสามารถสร้างผลลัพธ์เดียวกันได้จากซอร์สโค้ด สภาพแวดล้อมการบิลด์ และคำสั่งบิลด์เดียวกัน
- Debian นำหน้าในด้านนี้มานานกว่า 10 ปี และตอนนี้สามารถสร้างแม้กระทั่ง live CD อย่างเป็นทางการให้สร้างซ้ำได้
- Fedora เพิ่งเริ่มทำงานด้าน reproducible builds ได้ไม่นาน แต่กำลังพิจารณาข้อเสนอที่จะทำให้ 99% ของแพ็กเกจทั้งหมดสร้างซ้ำได้ภายในรอบการพัฒนา Fedora 43
ความแตกต่างระหว่าง Fedora กับ Debian
- Debian อนุญาตให้อัปโหลดแพ็กเกจที่บิลด์จากเครื่องโลคัล จึงอาจมีความน่าเชื่อถือต่ำกว่า
- Fedora บิลด์แพ็กเกจทั้งหมดแบบรวมศูนย์ในโครงสร้างพื้นฐานที่ควบคุมอย่างเข้มงวด
- Fedora ติดตามแพ็กเกจได้ง่ายผ่านที่เก็บ Git ชื่อ
dist-git ซึ่งมีทั้งซอร์สและข้อมูลแฮช
นิยาม Reproducible Build แบบเฉพาะของ Fedora
- Fedora ใช้นิยามที่แตกต่างจาก Debian
- โดยตัดส่วน signature และเมทาดาทาบางส่วนออก แล้วโฟกัสที่เนื้อหาจริงของไฟล์ RPM (
payload)
- เหตุผลมาจากลักษณะของฟอร์แมต RPM และวิธีการเซ็น รวมถึงมีข้อมูลอย่างเวลาในการบิลด์ (
BUILDTIME) และโฮสต์ที่ใช้บิลด์ (BUILDHOST) รวมอยู่ด้วย
- openSUSE แก้ปัญหานี้ด้วยการตั้งค่า
BUILDHOST เป็น reproducible
ความคืบหน้าทางเทคนิคของ Fedora สู่การบิลด์แบบสร้างซ้ำได้
- ตั้งแต่ Fedora 38 มีการเปลี่ยนแปลงโดยใช้
SOURCE_DATE_EPOCH เพื่อตรึงเวลาแก้ไขไฟล์ให้คงที่
- ใน Fedora 41 มีการนำเครื่องมือที่เขียนด้วย Rust ชื่อ
add-determinism มาใช้เพื่อทำให้เมทาดาทาของไฟล์ที่บิลด์แล้วเป็นมาตรฐานเดียวกัน
- Debian ใช้ไลบรารี Perl ชื่อ
strip-nondeterminism แต่ Fedora เลือกใช้เครื่องมือของตัวเองเพื่อหลีกเลี่ยงการพึ่งพา Perl
- ปัจจุบันบรรลุความสามารถในการสร้างซ้ำได้ของแพ็กเกจแล้วราว 90%
แผนต่อจากนี้
- 9% ที่เหลือ มีแผนจะผลักดันให้ผู้ดูแลแพ็กเกจมองปัญหาการสร้างซ้ำไม่ได้เป็นบั๊กและทำการแก้ไข
- จะมีการจัดเตรียมยูทิลิตี
fedora-repro-build เพื่อให้ทดสอบจากโลคัลได้ว่า Koji build สามารถสร้างซ้ำได้หรือไม่
- มีแผนเปิดใช้งานระบบตรวจสอบอิสระชื่อ
rebuilderd แบบสาธารณะ ซึ่งจะวิเคราะห์เมทาดาทาของแพ็กเกจและตรวจสอบความสามารถในการสร้างซ้ำได้ผ่านการรีบิลด์
rebuilderd สามารถสร้างรายงานความแตกต่างผ่าน diffoscope ได้
แนวทางการแพ็กเกจและการยกระดับคุณภาพ
- แนวทางการแพ็กเกจของ Fedora จะถูกอัปเดตเป็น “ควรบิลด์ให้สร้างซ้ำได้เมื่อเป็นไปได้”
- การบิลด์แบบสร้างซ้ำได้ไม่เพียงช่วยด้านความปลอดภัย แต่ยังช่วยยกระดับคุณภาพของแพ็กเกจด้วย
- ตัวอย่างเช่น หากพบการพึ่งพาฮาร์ดแวร์ในแพ็กเกจที่ไม่ขึ้นกับสถาปัตยกรรม ก็อาจเป็นบั๊กได้
กรณียกเว้นที่ยังสร้างซ้ำไม่ได้
- Haskell ยังสร้างซ้ำไม่ได้เมื่อบิลด์แบบมัลติเธรด และกำลังอยู่ระหว่างการแก้ไข
- Go ยังสร้างซ้ำไม่ได้เพราะไฟล์ดีบัก
.gdb_index ไม่คงที่ และยังไม่มีวิธีแก้
- การเซ็นโมดูลเคอร์เนลของ Linux ใช้คีย์ชั่วคราว และมีการเสนอแพตช์ที่เกี่ยวข้องแล้ว
เสียงตอบรับจากชุมชน
- ทีมโครงสร้างพื้นฐานของ Fedora ตั้งคำถามเกี่ยวกับตำแหน่งและการดูแลรักษา rebuilderd
- มีการพูดคุยด้วยว่าสามารถรวม rebuilderd เข้ากับ Koji ได้หรือไม่
- บางความเห็นมองว่าการใช้ระบบนอก Koji จะเหมาะสมกว่าเพื่อการตรวจสอบอย่างเป็นอิสระ
- บางส่วนยังเสนอแนวทางใช้ Copr แทน rebuilderd
- โดยรวมแล้ว แนวทางที่ได้รับความนิยมคือการเพิ่มการทำงานร่วมกับเครื่องมือเดิมของ Fedora ให้มากขึ้น
ขั้นตอนถัดไป
- มีแผนยื่นตั๋วข้อเสนอไปยัง FESCo (Fedora Engineering Steering Committee)
- หากได้รับอนุมัติ จะเดินหน้าดำเนินการอย่างจริงจังให้ทันเป้าการออก Fedora 43 ในเดือนตุลาคม
- ผู้ใช้ปลายทางอาจแทบไม่รู้สึกถึงความแตกต่าง แต่ถือเป็นการเปลี่ยนแปลงที่มีคุณค่าอย่างมากในมุมความปลอดภัยของซัพพลายเชน
7 ความคิดเห็น
ทีม Fedora ทำให้รู้สึกทึ่งอยู่เสมอ และรู้สึกว่าการตัดสินใจส่วนใหญ่ก็กำลังพัฒนาไปในทิศทางที่ถูกต้อง ผมใช้งานด้วยความรู้สึกขอบคุณทุกท่านที่มีส่วนร่วมมาโดยตลอด
เมื่อก่อนเหมือนจะใช้กันบ่อยมาก แต่ช่วงนี้ทำไมถึงถูกลืมไปแล้วล่ะ?
ยังคงได้รับความนิยมสูงมากในชุมชนลินุกซ์สำหรับการใช้งานเป็นเดสก์ท็อปลินุกซ์
เนื่องจากไม่ใช่ดิสโทรสำหรับงานเซิร์ฟเวอร์ จึงดูเหมือนว่าจะไม่ได้เป็นที่รู้จักมากนักในบ้านเรา ซึ่งตลาดเดสก์ท็อปลินุกซ์ไม่ได้คึกคักนัก
อ๋อ ช่วงนี้ถ้าไม่ใช่ผู้ใช้สายหนัก ก็ดูเหมือนว่าจะเลือก Ubuntu ที่ใช้ได้ทั้งบนเซิร์ฟเวอร์และเดสก์ท็อปกันนะ!
ดีใจที่ได้เห็นเรื่องราวเกี่ยวกับลินุกซ์เลยขอเสริมสักหน่อยครับ.. ฮ่าๆ
หลังจาก Ubuntu นำ snap มาใช้ กระแสตอบรับจากฝั่งเดสก์ท็อปก็ดิ่งลงไปเหมือนกัน.. แล้ว Unity DE ก็เป็นอะไรที่คนชอบกับไม่ชอบแตกกันมาก.. แถมรอบการออกรุ่นก็นานเกินไป จนรองรับไดรเวอร์ล่าสุดได้ไม่ค่อยดีด้วย..
ถ้ากำลังพิจารณาเดสก์ท็อปลินุกซ์อยู่ ขอแนะนำ Fedora จริงๆ ครับ
Fedora ใช้ Gnome ที่ใกล้เคียงแบบดั้งเดิม แล้วช่วงหลัง Gnome ก็อัปเดตมาแบบจัดเต็ม เลยรู้สึกพอใจมากจริงๆ!
ขอบคุณครับ
พอพูดถึง Fedora ก็ทำให้นึกถึงความทรงจำเก่า ๆ ขึ้นมาเลย
ความคิดเห็นจาก Hacker News