共有ライブラリファイルのrpm識別子を分解します。

共有ライブラリファイルのrpm識別子を分解します。

次のようなものを実行すると:

rpm -q --fileprovide foo-1.0.0-0.x86_64

ファイルのリストを取得し、それらのいくつかは右側に識別子を持っています。たとえば、次のようになります。

/usr/lib64/bar.so.4        bar.so.4()(64bit)

私が知る限り、これらの識別子にはSONAME、()、(CPU-ARCH)を含む3つのコンポーネントがあるようです。ただし、オンラインでは、これらのコンポーネントの公式名またはあなたが話している正しい識別子を見つけることができません。空()がある理由は何であり、その中にどのような値を含めることができますか?すべてがどんな慣習に従うと思いますが、それが何であるかわかりません...

答え1

RPMはELFリンカー/ローダーと同様にsonameトレースライブラリを使用します。

バージョン指定されたシンボルが glibc に追加されると、RPM は最初の角かっこセット内に独自のバージョンを追加します。多くの例については、「rpm -q --fileprovide glibc」を参照してください。

multilib(同じシステムの32ビットライブラリと64ビットライブラリ)を追加すると、「(64ビット)」タグが追加され、区別されます。

残念ながら、間違った通信のため、バージョン記号なしでライブラリに空の「()」が追加されました。原則として、シンボルバージョンは空の「()」と表示されますが、glibcを除いてシンボルバージョン管理を使用するライブラリはほとんどありません。

関連情報