/usr/lib/.build-id
містить основні файли збірки id для встановлених пакетів. До Fedora 27 вони /usr/lib/debug
працювали поряд з налагоджуваними файлами в , а постачалися лише в RPM з налагодженням. У Fedora 27 було внесено зміни, що дозволяють паралельно встановлювати декілька інформаційних пакетів налагодження. Частина цієї зміни включає доставку основних файлів збірки id у пакеті, який вони відповідають, щоб переконатися, що вони відповідають встановленим бінарним файлам.
Інформаційні пакети налагодження використовуються у багатьох дистрибутивах, щоб забезпечити можливість користувачам встановлювати інформацію про налагодження, коли це необхідно, без роздуття бінарних файлів для всіх. Коли програма чи бібліотека побудована та пов'язана, вона може бути побудована з інформацією про налагодження, яку потім налагоджувачі можуть використовувати для картографування місць у бінарному файлі з розташуваннями у вихідному коді; але ця інформація займає багато місця. Таким чином, інформація про налагодження зазвичай знімається з двійкових файлів перед їх упаковкою. В останні роки, strip
і objcopy
були вдосконалені таким чином , що інформація про налагодженні можуть бути вилучені і збережені окремо - це, як будуються налагоджувати інформація пакети. Все, що потрібно тоді, - це певний спосіб забезпечити відповідність двійкового файлу та його налагоджувальну інформацію, і саме тут входять ідентифікатори збірки - це унікальні ідентифікатори, обчислені заld
(шукайте --build-id
там) над значними частинами двійкового. "Основні файли ідентифікації збірки" - це посилання від ідентифікатора збірки до відповідного бінарного або інформаційного файлу налагодження; вони дозволяють реалізувати двосторонні відображення, так що основні скиди можуть бути корисними налагодженими (у розділі є посилання від двійкових файлів до їхніх ідентифікаторів збирання у самих бінарних файлах .gnu_debuglink
). Ви знайдете детальне пояснення обґрунтування всього цього в описі функції Fedora build-id .
rpm --query --file /usr/lib/.build-id
перелічує тонну пакетів, що "володіють"/usr/lib/.build-id
... дивно.