/usr/lib/.build-id
มีไฟล์ build-id หลักสำหรับแพ็คเกจที่ติดตั้ง ก่อนหน้า Fedora 27 สิ่งเหล่านี้อาศัยอยู่ข้างๆไฟล์ดีบั๊ก/usr/lib/debug
และถูกส่งในการแก้ปัญหา RPM เท่านั้น ใน Fedora 27 มีการเปลี่ยนแปลงเพื่อให้สามารถติดตั้งแพคเกจข้อมูลดีบั๊กหลายชุดได้ ส่วนหนึ่งของการเปลี่ยนแปลงนั้นเกี่ยวข้องกับการจัดส่งไฟล์บิวด์ - ไอดีหลักในแพ็คเกจที่ตรงกันเพื่อให้แน่ใจว่าตรงกับไบนารีที่ติดตั้ง
แพคเกจข้อมูลการตรวจแก้จุดบกพร่องถูกนำมาใช้ในการกระจายจำนวนมากเพื่อให้วิธีการสำหรับผู้ใช้ในการติดตั้งข้อมูลการแก้จุดบกพร่องเมื่อมีความจำเป็นโดยไม่ต้อง bloating ไบนารีสำหรับทุกคน เมื่อโปรแกรมหรือไลบรารีถูกสร้างและเชื่อมโยงมันสามารถสร้างขึ้นด้วยข้อมูลการดีบักซึ่งตัว debuggers สามารถใช้เพื่อแมปตำแหน่งที่ตั้งในไบนารีกับตำแหน่งที่ตั้งในซอร์สโค้ด แต่ข้อมูลนี้ใช้พื้นที่มาก โดยทั่วไปแล้วข้อมูลการดีบั๊กจะถูกดึงออกจากไบนารีก่อนที่จะบรรจุ ในปีที่ผ่านมาstrip
และobjcopy
ได้รับการปรับปรุงเพื่อให้ข้อมูลการดีบักสามารถแยกและจัดเก็บแยกต่างหาก - นั่นเป็นวิธีสร้างแพคเกจข้อมูลการดีบัก สิ่งที่ต้องการคือวิธีที่จะทำให้แน่ใจว่าไบนารีและข้อมูลการดีบักนั้นสอดคล้องกันและนั่นคือสิ่งที่บิวด์ id เข้ามา - มันเป็นตัวระบุที่ไม่ซ้ำกันซึ่งคำนวณโดยld
(มองหาที่--build-id
นั่น) ส่วนสำคัญของไบนารี “ ไฟล์ build-id หลัก” เป็น symlink จากบิลด์ id ไปยังไฟล์ไบนารี่หรือ debug info ที่สอดคล้องกัน พวกเขาอนุญาตให้ทำการแมปแบบสองทางเพื่อให้การถ่ายโอนหลักสามารถดีบั๊กได้อย่างเป็นประโยชน์ (มีลิงก์จากไบนารีไปยังรหัสการสร้างในไบนารีเองใน.gnu_debuglink
ส่วน) คุณจะพบคำอธิบายรายละเอียดของเหตุผลที่อยู่เบื้องหลังทั้งหมดนี้ในการสร้างรหัสคำอธิบายคุณลักษณะ Fedora
rpm --query --file /usr/lib/.build-id
แสดงรายการแพคเกจมากมาย "เป็นเจ้าของ"/usr/lib/.build-id
... แปลก