/usr/lib/.build-id/dirの目的は何ですか?

/usr/lib/.build-id/dirの目的は何ですか?

/usr/lib/.build-id/f27(netinstall)を再インストールした後、多くのpkgがディレクトリに小さなファイルを保存することを確認しました。当初、私は何とかdnfに対してあいまいな「デバッグ」モードを有効にしたと思いましたが、それにもかかわらず

$ dnf download httpd

ファイルを含むrpmを取得します/usr/lib/.build-id/*

以前のFedoraバージョンではこれは覚えていません。

答え1

/usr/lib/.build-idインストールされたパッケージのデフォルトのビルドIDファイルが含まれています。 Fedora 27以前は、これらのファイルはデバッグファイルと一緒に存在し、/usr/lib/debugデバッグRPMでのみ利用可能でした。 Fedora 27では変更が導入されました。複数のデバッグ情報パッケージを並列にインストールできます。変更の一部には、インストールされているバイナリと一致することを確認するために、一致するパッケージにデフォルトのビルドIDファイルを提供することが含まれます。

デバッグ情報パッケージは、多くのディストリビューションで使用され、誰にも大きなバイナリを提供することなく、必要なときにデバッグ情報をインストールする方法をユーザーに提供します。プログラムまたはライブラリをビルドおよびリンクするときにデバッグ情報を使用してビルドできます。この情報は、デバッガがバイナリの場所をソースコードの場所にマップするために使用できますが、この情報は多くのスペースを占有します。したがって、デバッグ情報は通常、パッケージングの前にバイナリから削除されます。ここ数年、stripそしてobjcopyデバッグ情報を個別に抽出して保存できるように拡張されました。これがデバッグ情報パッケージの構築方法です。次に、必要なのはバイナリと対応するデバッグ情報が一致することを確認する方法です。ここでビルドIDが使用されます。ビルドIDは、次の式で計算された一意の識別子です。ld(そこを見てください--build-id)バイナリの重要な部分です。 「マスタービルドIDファイル」は、ビルドIDから対応するバイナリまたはデバッグ情報ファイルへのシンボリックリンクである。これにより、コアダンプを効率的にデバッグできるように双方向マッピングが可能になります(リソースセクションにはバイナリファイル自体にスレーブがあります)。ビルドIDへのバイナリリンク.gnu_debuglink)。これらすべての理由の詳細な説明は、以下で確認できます。Fedora ビルド ID 機能の説明

関連情報