เป้าหมายสำคัญอย่างหนึ่งในการรักษาความปลอดภัยซอฟต์แวร์โอเพนซอร์ส คือการทำให้การคอมไพล์สามารถทำซ้ำได้ (reproducible builds) เพื่อให้คนภายนอกแน่ใจได้ว่าซอร์สโค้ดที่เปิดเผยออกมาตรงกับซอฟต์แวร์ที่กำลังใช้งานอยู่ แต่กระบวนการทำจริงนั้นมีเงื่อนไขหลายอย่างที่ทำให้โค้ดไม่สามารถคอมไพล์ออกมาให้ตรงกันทุกครั้ง แต่วันนี้ทาง NetBSD ก็ออกมาระบุว่าตอนนี้การคอมไพล์บนสถาปัตยกรรม amd64 และ sparc64 สามารถทำซ้ำได้แล้ว
ทาง NetBSD แจงรายการปัญหาที่พบจากการพยายามทำให้การคอมไพล์ทำซ้ำได้ ได้แก่
- ค่าเวลา (timestamp) มีหลายอย่างในระบบคอมไพล์พยายามเก็บค่าเวลา
- ข้อมูลวันคอมไพล์, ชื่อเครื่อง ฯลฯ ข้อมูลที่เปลี่ยนไปตามเวลาและเซิร์ฟเวอร์ที่คอมไพล์ได้ทำให้ไฟล์ที่คอมไพล์ออกมาต่างกัน เพราะบางครั้งใส่มาโคร
__TIME__
ไว้ในไฟล์ - โซนเวลาของเครื่องที่คอมไพล์
- ลำดับการคอมไพล์ที่หลายระบบคอมไพล์ลำดับไม่ตรงกัน
- ข้อมูลดิบในไฟล์
- การลิงก์ในระบบไฟล์
- ความไม่แน่นอนของเครื่องมือในการคอมไพล์ เครื่องมือบางตัวไม่รับประกันลำดับการทำงาน
- ชุดเครื่องมือมีเอาท์พุตไม่แน่นอน
- ค่าปรับแต่งต่างๆ และตัวแปรของระบบ
- การแก้ไขซอร์สโค้ดในเครื่องที่คอมไพล์เอง
ตอนนี้ทาง NetBSD กำลังพยายามขยายการคอมไพล์แบบทำซ้ำได้นี้ไปยังแพลตฟอร์มอื่นๆ ต่อไป
ที่มา - NetBSD
Comments
เคยใช้แต่ freebsd ส่วนตัวนี้งงๆ กับการติดตั้ง
อ่านข่าวนี้นึกถึง Gentoo เลย