Quel est le but de /usr/lib/.build-id/ dir?


10

Après une nouvelle installation de f27 (netinstall), j'ai remarqué que de nombreux paquets placent de minuscules fichiers dans /usr/lib/.build-id/dir. Au début, je pensais que j'avais en quelque sorte activé un mode obscur de «débogage» pour dnf, mais même

$ dnf download httpd

récupère un rpm avec des /usr/lib/.build-id/*fichiers.

Je ne m'en souviens pas dans les précédents rouleaux Fedora.


rpm --query --file /usr/lib/.build-idliste une tonne de paquets "propriétaire" /usr/lib/.build-id... bizarre.
David Tonhofer

Réponses:


22

/usr/lib/.build-idcontient les principaux fichiers build-id des packages installés. Avant Fedora 27, ceux-ci cohabitaient avec les fichiers de débogage /usr/lib/debuget n'étaient livrés que dans les RPM de débogage. Dans Fedora 27, une modification a été introduite pour permettre l'installation parallèle de plusieurs packages d'informations de débogage. Une partie de ce changement implique l'envoi des principaux fichiers de build-id dans le package qu'ils correspondent, pour s'assurer qu'ils correspondent aux fichiers binaires installés.

Les packages d'informations de débogage sont utilisés dans de nombreuses distributions pour fournir aux utilisateurs un moyen d'installer les informations de débogage lorsque cela est nécessaire, sans ballonnement des binaires pour tout le monde. Lorsqu'un programme ou une bibliothèque est construit et lié, il peut être construit avec des informations de débogage, que les débogueurs peuvent ensuite utiliser pour mapper des emplacements dans le binaire avec des emplacements dans son code source; mais cette information prend beaucoup de place. Ainsi, les informations de débogage sont généralement supprimées des fichiers binaires avant d'être empaquetés. Au cours des dernières années, stripet objcopyont été améliorées afin que les informations de débogage peuvent être extraites et stockées séparément - c'est comment les paquets d'information de débogage sont construits. Il suffit alors de s'assurer qu'un binaire et ses informations de débogage correspondent, et c'est là que les identifiants de construction entrent en jeu - ce sont des identificateurs uniques calculés parld(recherchez --build-id-le) sur les parties importantes d'un binaire. Les «fichiers principaux de build-id» sont des liens symboliques d'un identifiant de build vers le fichier d'informations binaire ou de débogage correspondant; ils permettent aux mappages bidirectionnels d'être implémentés, de sorte que les vidages de mémoire puissent être utilement débogués (il y a un lien entre les binaires et leurs identifiants de construction dans les binaires eux-mêmes, dans la .gnu_debuglinksection). Vous trouverez une explication détaillée du raisonnement derrière tout cela dans la description de la fonctionnalité Fedora build-id .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.