1 คะแนน โดย GN⁺ 2025-04-12 | 7 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
bbulbum 2025-04-14

ทีม Fedora ทำให้รู้สึกทึ่งอยู่เสมอ และรู้สึกว่าการตัดสินใจส่วนใหญ่ก็กำลังพัฒนาไปในทิศทางที่ถูกต้อง ผมใช้งานด้วยความรู้สึกขอบคุณทุกท่านที่มีส่วนร่วมมาโดยตลอด

 
kandk 2025-04-14

เมื่อก่อนเหมือนจะใช้กันบ่อยมาก แต่ช่วงนี้ทำไมถึงถูกลืมไปแล้วล่ะ?

 
bbulbum 2025-04-14

ยังคงได้รับความนิยมสูงมากในชุมชนลินุกซ์สำหรับการใช้งานเป็นเดสก์ท็อปลินุกซ์
เนื่องจากไม่ใช่ดิสโทรสำหรับงานเซิร์ฟเวอร์ จึงดูเหมือนว่าจะไม่ได้เป็นที่รู้จักมากนักในบ้านเรา ซึ่งตลาดเดสก์ท็อปลินุกซ์ไม่ได้คึกคักนัก

 
kandk 2025-04-14

อ๋อ ช่วงนี้ถ้าไม่ใช่ผู้ใช้สายหนัก ก็ดูเหมือนว่าจะเลือก Ubuntu ที่ใช้ได้ทั้งบนเซิร์ฟเวอร์และเดสก์ท็อปกันนะ!

 
bbulbum 2025-04-14

ดีใจที่ได้เห็นเรื่องราวเกี่ยวกับลินุกซ์เลยขอเสริมสักหน่อยครับ.. ฮ่าๆ
หลังจาก Ubuntu นำ snap มาใช้ กระแสตอบรับจากฝั่งเดสก์ท็อปก็ดิ่งลงไปเหมือนกัน.. แล้ว Unity DE ก็เป็นอะไรที่คนชอบกับไม่ชอบแตกกันมาก.. แถมรอบการออกรุ่นก็นานเกินไป จนรองรับไดรเวอร์ล่าสุดได้ไม่ค่อยดีด้วย..
ถ้ากำลังพิจารณาเดสก์ท็อปลินุกซ์อยู่ ขอแนะนำ Fedora จริงๆ ครับ
Fedora ใช้ Gnome ที่ใกล้เคียงแบบดั้งเดิม แล้วช่วงหลัง Gnome ก็อัปเดตมาแบบจัดเต็ม เลยรู้สึกพอใจมากจริงๆ!

 
kandk 2025-04-14

ขอบคุณครับ
พอพูดถึง Fedora ก็ทำให้นึกถึงความทรงจำเก่า ๆ ขึ้นมาเลย

 
GN⁺ 2025-04-12
ความคิดเห็นจาก Hacker News
  • เพื่อนที่ได้พบระหว่างทางคือสมบัติที่แท้จริง
  • อยากเห็นไบนารีที่ลิงก์แบบสแตติกมากกว่านี้ ตัวอย่างเช่น Python ติดตั้งและใช้งานได้อย่างฝันร้าย
  • ดีใจที่เห็นว่าพวกเขาก็มีส่วนร่วมในโปรเจกต์นี้ด้วย
  • แพ็กเกจ Haskell ตอนนี้ยังบิลด์ซ้ำแบบเดิมไม่ได้เมื่อคอมไพล์หลายเธรด แต่คิดว่านี่ไม่ใช่ปัญหาใหญ่ คอมไพเลอร์ gcc ไม่รองรับการคอมไพล์หลายเธรดอยู่แล้ว สำหรับภาษา C การประมวลผลแบบขนานมาจากการคอมไพล์หลาย translation unit พร้อมกัน
  • น่าทึ่งที่ได้เห็นความคืบหน้านี้ ขอชื่นชมทุกคนที่ทุ่มเทแรงกายแรงใจ
  • ข่าวที่เกี่ยวข้องคือ เมื่อเดือนมีนาคม Debian bookworm live image สามารถทำให้บิลด์ซ้ำได้อย่างสมบูรณ์แล้ว
  • ในฐานะผู้ใช้ Fedora ฉันสงสัยว่าสิ่งนี้ให้ประโยชน์อะไรกับฉันจริง ๆ เข้าใจได้สำหรับบิลด์แบบปิด แต่ก็ยังสงสัยว่าทำไมถึงจำเป็น
  • ความสามารถในการบิลด์ซ้ำได้ขัดกับการปรับแต่งประสิทธิภาพแบบ profile-guided โดยเฉพาะเมื่อมีระบบเครือข่ายและ I/O อื่น ๆ ที่ไม่สม่ำเสมอเข้ามาเกี่ยวข้อง
  • ใช่! อยากให้เครื่องมืออีกมากมายมีความเป็น deterministic สิ่งที่อยู่อันดับต้น ๆ ในรายการความปรารถนาของฉันคือการตั้งค่า Proxmox