После свежего экземпляра f27 (netinstall) я заметил, что многие pkgs помещают крошечные файлы в /usr/lib/.build-id/
dir. Сначала я подумал, что каким-то образом включил неясный режим «отладки» для dnf, но даже
$ dnf download httpd
извлекает rpm с /usr/lib/.build-id/*
файлами в нем.
Я не помню этого в предыдущих версиях Fedora.
rpm --query --file /usr/lib/.build-id
перечисляет тонну пакетов "владеющих"/usr/lib/.build-id
... странно.Ответы:
/usr/lib/.build-id
содержит основные файлы build-id для установленных пакетов. До Fedora 27 они/usr/lib/debug
находились рядом с файлами отладки и поставлялись только в отладочных RPM. В Fedora 27 было внесено изменение, позволяющее параллельную установку нескольких пакетов с отладочной информацией. Частично это изменение включает доставку основных файлов build-id в соответствующем пакете, чтобы они соответствовали установленным двоичным файлам.Пакеты отладочной информации используются во многих дистрибутивах, чтобы предоставить пользователям возможность устанавливать отладочную информацию, когда это необходимо, без раздувания двоичных файлов для всех. Когда программа или библиотека собрана и связана, она может быть построена с отладочной информацией, которую отладчики могут затем использовать для сопоставления местоположений в двоичном файле с местоположениями в его исходном коде; но эта информация занимает много места. Таким образом, информация об отладке обычно удаляется из двоичных файлов перед их упаковкой. В последние годы,
strip
иobjcopy
были усовершенствованы таким образом , что информация об отладке могут быть извлечены и сохранены отдельно - это, как строятся отлаживать информация пакеты. Все, что нужно, - это какой-то способ убедиться, что двоичный файл и его отладочная информация соответствуют друг другу, и именно здесь приходят идентификаторы сборки - это уникальные идентификаторы, рассчитываемыеld
(ищите--build-id
там) по значительным частям двоичного файла. «Основные файлы идентификатора сборки» - это символические ссылки из идентификатора сборки в соответствующий двоичный файл или файл информации об отладке; они позволяют реализовать двустороннее сопоставление, так что дампы ядра могут быть эффективно отлажены (есть ссылка от двоичных файлов на их идентификаторы сборки в самих двоичных файлах, в.gnu_debuglink
разделе). Подробное объяснение причин всего этого вы найдете в описании функции сборки в Fedora .источник