Mục đích của /usr/lib/.build-id/ dir là gì?


10

Sau một bản mới của f27 (cài đặt mạng) tôi nhận thấy rằng nhiều pkgs đặt các tệp nhỏ trong /usr/lib/.build-id/thư mục. Lúc đầu, tôi nghĩ rằng bằng cách nào đó tôi đã kích hoạt một số chế độ "gỡ lỗi" tối nghĩa cho dnf, nhưng thậm chí

$ dnf download httpd

lấy một vòng / phút w / /usr/lib/.build-id/*tập tin trong đó.

Tôi không nhớ điều này trong các phiên bản trước của Fedora.


rpm --query --file /usr/lib/.build-idliệt kê một tấn các gói "sở hữu" /usr/lib/.build-id... kỳ lạ.
David Tonhofer

Câu trả lời:


22

/usr/lib/.build-idchứ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/debugvà 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, stripobjcopyđã đượ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_debuglinkphầ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 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.