Debian: Encontre arquivos binários e de depuração por build-id

2

Supondo que eu tenha um core dump de um sistema Debian, onde eu conheço os build-ids das bibliotecas usadas no dump, mas não sei as versões exatas, existe uma maneira de encontrar esses arquivos?

Por exemplo, o comando eu-unstrip -n --core my-core-file me fornece uma lista de IDs de compilação a partir de um dump principal, assim:

0x7f09b7228000+0x272108 1b72306ef00166fe1511d57140b50f5ce341170e@0x7f09b72281d8 /lib/x86_64-linux-gnu/libpcre.so.3 - libpcre.so.3

0x7f09bac07000+0x219208 908b5a955d0a73fb8d31e0f927d0cdba810cb300@0x7f09bac071d8 /lib/x86_64-linux-gnu/libz.so.1 - libz.so.1

0x7f09bb06c000+0x20fd88 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1@0x7f09bb06c1d8 /lib/x86_64-linux-gnu/libbz2.so.1.0 - libbz2.so.1.0

Com base nesses nomes de bibliotecas e IDs de construção, existe um comando, serviço da web ou qualquer coisa que possa me dizer a qual pacote ou versões de arquivo esses id de build correspondem, para que eu possa baixá-los?

    
por mooware 10.10.2018 / 16:04

1 resposta

2

Até onde sei, não há ferramenta para pesquisar IDs de compilação (mas veja abaixo).

Você pode usar apt-file para procurar pacotes fornecendo as bibliotecas em uso. Instale, atualize os índices e execute

apt-file search /lib/x86_64-linux-gnu/libpcre.so.3
apt-file search /lib/x86_64-linux-gnu/libz.so.1
apt-file search /lib/x86_64-linux-gnu/libbz2.so.1.0

Para usar IDs de construção, você precisa consultar Packages arquivos manualmente. O índice para repositórios de depuração inclui os IDs de compilação; por exemplo

$ apt show libbz2-1.0-dbgsym
Package: libbz2-1.0-dbgsym
Version: 1.0.6-8.1
Auto-Built-Package: debug-symbols
Priority: extra
Section: debug
Source: bzip2
Maintainer: Anibal Monsalve Salazar <[email protected]>
Installed-Size: 68.6 kB
Depends: libbz2-1.0 (= 1.0.6-8.1)
Homepage: http://www.bzip.org/
Build-Ids: 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1
Download-Size: 51.5 kB
APT-Sources: http://debug.mirrors.debian.org/debian-debug stretch-debug/main amd64 Packages
Description: Debug symbols for libbz2-1.0

Para pesquisar diretamente os IDs de compilação, grep a /var/lib/apt/*Packages :

grep -l 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1 /var/lib/apt/lists/*Packages

Você pode combinar isso com less para ver o nome e a versão do pacote:

grep -l 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1 /var/lib/apt/lists/*Packages | xargs -r less -p06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1

Isso só funcionará se você tiver os índices dos pacotes de depuração; para obtê-los, adicione um arquivo a /etc/apt/sources.list.d , chame-o por exemplo debug.sources , contendo

Types: deb
URIs: http://debug.mirrors.debian.org/debian-debug/
Suites: stretch-debug testing-debug unstable-debug experimental-debug
Components: main

Isso fará o download dos índices de depuração para o componente principal em stable, testing, unstable e experimental.

Alguns pacotes (como libpcre3 ) não criam -dbgsym packages, então eles não são abrangidos pela pesquisa acima. Há um libpcre3-dbg correspondente, mas, até onde posso dizer, nenhuma das versões atualmente nos arquivos corresponde ao seu ID de compilação.

    
por 10.10.2018 / 16:34