Qual é o objetivo de /usr/lib/.build-id/ dir?


10

Após um novo inst do f27 (netinstall), notei que muitos pkgs colocam pequenos arquivos no /usr/lib/.build-id/diretório No primeiro dia, pensei que de alguma forma havia habilitado algum modo obscuro de "depuração" para o dnf, mas mesmo

$ dnf download httpd

busca uma rpm com /usr/lib/.build-id/*arquivos nele.

Não me lembro disso nas versões anteriores do Fedora.


rpm --query --file /usr/lib/.build-idlista uma tonelada de pacotes "proprietários" /usr/lib/.build-id... estranhos.
David Tonhofer

Respostas:


22

/usr/lib/.build-idcontém os principais arquivos de build-id para pacotes instalados. Antes do Fedora 27, eles viviam ao lado dos arquivos de depuração /usr/lib/debuge eram enviados apenas em RPMs de depuração. No Fedora 27, uma alteração foi introduzida para permitir a instalação paralela de vários pacotes de informações de depuração. Parte dessa mudança envolve o envio dos principais arquivos de ID de compilação no pacote correspondente, para garantir que eles correspondam aos binários instalados.

Os pacotes de informações de depuração são usados ​​em muitas distribuições para fornecer aos usuários uma maneira de instalar informações de depuração quando necessário, sem inchar os binários para todos. Quando um programa ou biblioteca é criado e vinculado, ele pode ser criado com informações de depuração, que os depuradores podem usar para mapear locais no binário com locais em seu código-fonte; mas essa informação ocupa muito espaço. Portanto, as informações de depuração normalmente são retiradas dos binários antes de serem empacotadas. Nos últimos anos, stripe objcopyforam aprimorados para que as informações de depuração podem ser extraídos e armazenados separadamente - que é como informação de pacotes de depuração são construídas. Tudo o que é necessário, então, é uma maneira de garantir que um binário e suas informações de depuração correspondam, e é aí que entram os IDs de compilação - eles são identificadores únicos calculados porld(procure --build-idlá) sobre as partes significativas de um binário. “Arquivos principais de identificação de construção” são links simbólicos de uma identificação de construção para o arquivo de informações binárias ou de depuração correspondente; eles permitem que os mapeamentos bidirecionais sejam implementados, para que os dumps principais possam ser úteis para depuração (há um link de binários para seus IDs de construção nos próprios binários, na .gnu_debuglinkseção). Você encontrará uma explicação detalhada do raciocínio por trás de tudo isso na descrição do recurso de identificação de construção do Fedora .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.