¿Cuál es el propósito de /usr/lib/.build-id/ dir?


10

Después de un nuevo inst de f27 (netinstall) noté que muchos paquetes colocan pequeños archivos en /usr/lib/.build-id/dir. Al primero pensé que de alguna manera había habilitado un modo oscuro de "depuración" para dnf, pero incluso

$ dnf download httpd

recupera un rpm con /usr/lib/.build-id/*archivos en él.

No recuerdo esto en las versiones anteriores de Fedora.


rpm --query --file /usr/lib/.build-idenumera una tonelada de paquetes "propios" /usr/lib/.build-id... raro.
David Tonhofer

Respuestas:


22

/usr/lib/.build-idcontiene los principales archivos build-id para los paquetes instalados. Antes de Fedora 27, estos vivían junto con los archivos de depuración /usr/lib/debugy solo se enviaban en RPM de depuración. En Fedora 27, se introdujo un cambio para permitir la instalación paralela de múltiples paquetes de información de depuración. Parte de ese cambio implica el envío de los archivos de identificación de compilación principales en el paquete con el que coinciden, para garantizar que coincidan con los binarios instalados.

Los paquetes de información de depuración se utilizan en muchas distribuciones para proporcionar a los usuarios una forma de instalar la información de depuración cuando sea necesario, sin hinchar los binarios para todos. Cuando se construye y vincula un programa o biblioteca, se puede construir con información de depuración, que los depuradores pueden usar para mapear ubicaciones en el binario con ubicaciones en su código fuente; pero esta información ocupa mucho espacio. Por lo tanto, la información de depuración generalmente se elimina de los archivos binarios antes de que se empaqueten. En los últimos años, stripy objcopyse han mejorado para que la información de depuración se pueda extraer y almacenar por separado, así es como se crean los paquetes de información de depuración. Todo lo que se necesita es una forma de garantizar que un binario y su información de depuración correspondan, y ahí es donde entran los identificadores de compilación: son identificadores únicos calculados porld(busque --build-idallí) sobre las partes significativas de un binario. Los "archivos principales de ID de compilación" son enlaces simbólicos de una ID de compilación al archivo binario o de información de depuración correspondiente; permiten que se implementen asignaciones bidireccionales, de modo que los volcados de núcleo se puedan depurar de manera útil (hay un enlace desde los binarios a sus identificadores de compilación en los propios binarios, en la .gnu_debuglinksección). Encontrará una explicación detallada del razonamiento detrás de todo esto en la descripción de la característica de compilación de Fedora .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.