/Usr/lib/.build-id/ dir'nin amacı nedir?


10

F27 yeni bir inst sonra (netinstall) birçok pkgs /usr/lib/.build-id/dir küçük dosyaları yerleştirin fark ettim . 1'de bir şekilde dnf için bazı "hata ayıklama" modunu etkinleştirdiğimi düşündüm, ama hatta

$ dnf download httpd

/usr/lib/.build-id/*içindeki dosyaları içeren bir rpm alır.

Bunu önceki Fedora rellerinde hatırlamıyorum.


rpm --query --file /usr/lib/.build-id"sahip" bir sürü paket listeler /usr/lib/.build-id... garip.
David Tonhofer

Yanıtlar:


23

/usr/lib/.build-idkurulu paketler için ana yapı kimliği dosyalarını içerir. Fedora 27'den önce, bunlar hata ayıklama dosyalarıyla birlikte yaşadı /usr/lib/debugve yalnızca hata ayıklama RPM'lerinde gönderildi. Fedora 27'de, birden çok hata ayıklama bilgi paketinin paralel kurulumuna izin veren bir değişiklik yapıldı . Bu değişikliğin bir kısmı, kurulu ikili dosyalarla eşleştiklerinden emin olmak için ana derleme kimlik dosyalarını eşleştikleri pakette göndermeyi içerir.

Hata ayıklama bilgi paketleri, birçok dağıtımda, kullanıcıların gerektiğinde herkes için ikili dosyaları engellemeden hata ayıklama bilgilerini yüklemelerine olanak sağlamak için kullanılır. Bir program veya kitaplık oluşturulduğunda ve bağlandığında, hata ayıklayıcıların ikili koddaki konumları kaynak kodundaki konumlarla eşlemek için kullanabileceği hata ayıklama bilgileriyle oluşturulabilir; ama bu bilgiler çok yer kaplıyor. Bu nedenle, hata ayıklama bilgileri genellikle paketlenmeden önce ikili dosyalardan çıkarılır. Son yıllarda stripve objcopyhata ayıklama bilgilerinin ayrı ayrı çıkarılabilmesi ve saklanabilmesi için geliştirilmiştir - hata ayıklama bilgi paketleri bu şekilde oluşturulur. O zaman tek gereken, bir ikili ve hata ayıklama bilgilerinin karşılık gelmesini sağlamanın bir yoludur ve bu noktada yapı kimlikleri devreye girer - bunlar tarafından hesaplanan benzersiz tanımlayıcılardırld(için göz --build-id, bir ikili önemli kısımlarının orada). “Ana derleme kimliği dosyaları” derleme kimliğinden ilgili ikili veya hata ayıklama bilgi dosyasına olan sembolik bağlantılardır; iki yönlü eşlemelerin uygulanmasına izin verir, böylece çekirdek dökümleri yararlı bir şekilde hata ayıklanabilir (ikili .gnu_debuglinkkısımdan ikili dosyadaki yapı kimliklerine bir bağlantı vardır ). Tüm bunların ardındaki mantığın ayrıntılı bir açıklamasını Fedora yapı kimliği özellik açıklamasında bulacaksınız .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.