web-dev-qa-db-fra.com

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

Après une nouvelle instance de F27 (NetInstall), j'ai remarqué que de nombreux PKG établissent de minuscules fichiers dans /usr/lib/.build-id/ dir. Au 1er je pensais que j'avais en quelque sorte activé un mode "debug" obscur pour le DNF, mais même

$ dnf download httpd

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

Je ne me souviens pas de cela dans la prev fedora rels.

10
a tired guy

/usr/lib/.build-id Contient les principaux fichiers d'identité de construction pour les packages installés. Avant Fedora 27, ceux-ci vivaient aux côtés des fichiers de débogage de /usr/lib/debug et n'étaient expédiés que dans les RPM de débogage. Dans Fedora 27, a changement a été introduit pour permettre une installation parallèle de plusieurs packages d'informations de débogage. Une partie de ce changement consiste à expédier les principaux fichiers d'identification de build dans l'emballage correspondant, afin de vous 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 d'installer des informations de débogage lorsque cela est nécessaire, sans binaires bloquants 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ébuggeurs peuvent ensuite utiliser pour cartographier 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 dépourvues de binaires avant d'être emballées. Au cours des dernières années, strip et objcopy ont été améliorés de sorte que les informations de débogage puissent être extraites et stockées séparément - c'est la manière dont les packages d'informations de débogage sont construits. Tout ce qui est nécessaire, c'est alors un moyen de garantir que les informations binaires et ses informations de débogage correspondent, et c'est là que les ID de construction sont entrés - ils sont des identifiants uniques calculés par ld (Recherchez-la --build-id là-bas) sur les portions importantes d'un binaire. "Les principaux fichiers d'identité de construction" sont des symboles d'un ID de construction au fichier d'informations binaires ou de débogage correspondant; Ils permettent de mettre en œuvre des mappages à deux voies, de sorte que les décharges de base puissent être utilement déboguées (il y a un lien des fichiers binaires à leurs identifiants de construction dans les fichiers binaires eux-mêmes, dans le .gnu_debuglink section). Vous trouverez une explication détaillée du raisonnement derrière tout cela dans la description Fedora Build-ID Feature Description .

21
Stephen Kitt