Debian: 빌드 ID로 바이너리 및 디버그 파일 찾기

Debian: 빌드 ID로 바이너리 및 디버그 파일 찾기

데비안 시스템의 코어 덤프가 있고 덤프에 사용된 라이브러리의 빌드 ID를 알고 있지만 정확한 버전은 모른다고 가정해 보겠습니다. 이러한 파일을 찾을 수 있는 방법이 있습니까?

예를 들어, 이 명령은 eu-unstrip -n --core my-core-file다음과 같은 코어 덤프의 빌드 ID 목록을 제공합니다.

0x7f09b7228000+0x2721081b72306ef00166fe1511d57140b50f5ce341170e@0x7f09b72281d8 /lib/x86_64-linux-gnu/libpcre.so.3 -libpcre.so.3

0x7f09bac07000+0x219208908b5a955d0a73fb8d31e0f927d0cdba810cb300@0x7f09bac071d8 /lib/x86_64-linux-gnu/libz.so.1 -libz.so.1

0x7f09bb06c000+0x20fd8806ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1@0x7f09bb06c1d8 /lib/x86_64-linux-gnu/libbz2.so.1.0 -libbz2.so.1.0

이러한 라이브러리 이름과 빌드 ID를 기반으로 이러한 빌드 ID가 어떤 패키지나 파일 버전에 해당하는지 알려 다운로드할 수 있도록 하는 명령, 웹 서비스 또는 기타 항목이 있습니까?

답변1

내가 아는 한 그런 건 없다.도구빌드 ID를 검색합니다(아래 참조).

이를 사용하여 apt-file사용 중인 라이브러리를 제공하는 패키지를 검색할 수 있습니다. 설치하고 색인을 업데이트하고 실행하십시오.

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

Packages빌드 ID를 사용하려면 파일을 수동으로 확인 해야 합니다 . 예를 들어 디버그 저장소의 인덱스에는 빌드 ID가 포함됩니다.

$ 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

빌드 ID를 직접 검색하려면 grep다음을 전달하세요 /var/lib/apt/*Packages.

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

이를 결합하여 less패키지의 이름과 버전을 확인할 수 있습니다.

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

이는 디버그 패키지의 인덱스가 있는 경우에만 작동합니다. 이를 얻으려면 에 파일을 추가 하세요 /etc/apt/sources.list.d.debug.sources

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

그러면 안정, 베타, 불안정 및 실험적 릴리스의 주요 구성 요소에 대한 디버그 색인이 다운로드됩니다.

일부 패키지(예 libpcre3: )는 패키지를 빌드하지 않으므로 -dbgsym위 검색에는 해당 패키지가 포함되지 않습니다. 해당 버전이 있지만 libpcre3-dbg, 제가 아는 한 현재 아카이브에 귀하의 빌드 ID와 일치하는 버전이 없습니다.

관련 정보