Po świeżym instancji f27 (netinstall) zauważyłem, że wiele pkgs umieszcza małe pliki w /usr/lib/.build-id/
reż. Na początku myślałem, że w jakiś sposób włączyłem jakiś niejasny tryb „debugowania” dla dnf, ale nawet
$ dnf download httpd
pobiera w nim /usr/lib/.build-id/*
pliki rpm z / .
Nie przypominam sobie tego w poprzednich relacjach Fedory.
rpm --query --file /usr/lib/.build-id
wymienia mnóstwo paczek „posiadających”/usr/lib/.build-id
... dziwne.Odpowiedzi:
/usr/lib/.build-id
zawiera główne pliki id kompilacji dla zainstalowanych pakietów. Przed Fedorą 27 pliki/usr/lib/debug
te znajdowały się obok plików debugowania i były dostarczane tylko w RPM debugowania. W Fedorze 27 wprowadzono zmianę umożliwiającą równoległą instalację wielu pakietów informacji debugowania. Część tej zmiany wiąże się z wysyłką głównych plików identyfikatora kompilacji w pakiecie, do którego pasują, aby upewnić się, że pasują one do zainstalowanych plików binarnych.Pakiety informacji debugowania są używane w wielu dystrybucjach, aby umożliwić użytkownikom instalowanie informacji debugowania w razie potrzeby, bez rozdęcia plików binarnych dla wszystkich. Kiedy program lub biblioteka jest budowana i łączona, można ją zbudować z informacjami debugowania, których debugery mogą następnie użyć do mapowania lokalizacji w pliku binarnym z lokalizacjami w kodzie źródłowym; ale ta informacja zajmuje dużo miejsca. Dlatego informacje debugujące są zwykle usuwane z plików binarnych przed ich spakowaniem. W ostatnich latach,
strip
aobjcopy
zostały wzmocnione tak, że informacje debugowania mogą być pozyskiwane i przechowywane oddzielnie - tak Informacje debugowania pakiety zostały utworzone. Wszystko, co jest wtedy potrzebne, to jakiś sposób na zapewnienie, że plik binarny i jego informacje debugowania odpowiadają, i tam właśnie przychodzą identyfikatory kompilacji - są to unikalne identyfikatory obliczane przezld
(poszukaj--build-id
tam) znaczących części pliku binarnego. „Główne pliki identyfikatora kompilacji” to dowiązania symboliczne z identyfikatora kompilacji do odpowiedniego pliku binarnego lub pliku informacji debugowania; pozwalają na implementację odwzorowań dwukierunkowych, dzięki czemu zrzuty rdzenia mogą być użytecznie debugowane (link z plików binarnych do ich identyfikatorów kompilacji w samych plikach binarnych, w.gnu_debuglink
sekcji). Szczegółowe wyjaśnienie uzasadnienia tego wszystkiego znajduje się w opisie funkcji kompilacji id Fedory .źródło