/usr/lib/.build-id
chứa các tệp xây dựng id chính cho các gói đã cài đặt. Trước Fedora 27, chúng sống cùng với các tệp gỡ lỗi /usr/lib/debug
và chỉ được vận chuyển trong các RPM gỡ lỗi. Trong Fedora 27, một thay đổi đã được đưa ra để cho phép cài đặt song song nhiều gói thông tin gỡ lỗi. Một phần của sự thay đổi đó liên quan đến việc vận chuyển các tệp xây dựng id chính trong gói mà chúng khớp, để đảm bảo rằng chúng khớp với các nhị phân đã cài đặt.
Các gói thông tin gỡ lỗi được sử dụng trong nhiều bản phân phối để cung cấp cách cho người dùng cài đặt thông tin gỡ lỗi khi cần thiết, không có mã nhị phân cho mọi người. Khi một chương trình hoặc thư viện được xây dựng và liên kết, nó có thể được xây dựng với thông tin gỡ lỗi, sau đó trình gỡ lỗi có thể sử dụng để ánh xạ các vị trí trong tệp nhị phân với các vị trí trong mã nguồn của nó; nhưng thông tin này chiếm rất nhiều phòng. Vì vậy, thông tin gỡ lỗi thường bị tước khỏi nhị phân trước khi chúng được đóng gói. Trong những năm gần đây, strip
và objcopy
đã được cải tiến để thông tin gỡ lỗi có thể được trích xuất và lưu trữ riêng - đó là cách các gói thông tin gỡ lỗi được xây dựng. Tất cả những gì cần thiết sau đó là một số cách để đảm bảo rằng thông tin nhị phân và thông tin gỡ lỗi của nó tương ứng và đó là nơi các id xây dựng xuất hiện - chúng là các định danh duy nhất được tính theold
(tìm --build-id
ở đó) trên các phần quan trọng của nhị phân. Các tập tin xây dựng id chính là các liên kết từ một id xây dựng đến tập tin thông tin nhị phân hoặc gỡ lỗi tương ứng; chúng cho phép ánh xạ hai chiều được triển khai, do đó các bãi rác cốt lõi có thể được gỡ lỗi một cách hữu ích (có một liên kết từ nhị phân đến id xây dựng của chúng trong các nhị phân, trong .gnu_debuglink
phần). Bạn sẽ tìm thấy một lời giải thích chi tiết về lý do đằng sau tất cả những điều này trong mô tả tính năng xây dựng id của Fedora .
rpm --query --file /usr/lib/.build-id
liệt kê một tấn các gói "sở hữu"/usr/lib/.build-id
... kỳ lạ.