Yum

分解共享庫文件的 rpm 標識符

  • March 17, 2017

如果我執行類似:

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

我得到一個文件列表,其中一些在右側有一個標識符,例如:

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

據我所知,這些標識符似乎有 3 個組件,包括 SONAME、()、(CPU-ARCH)。但是,我在網上的任何地方都找不到這些組件的正式名稱,也找不到您所說的右側標識符。為什麼有一個空的(),裡面可以有什麼值?這一切似乎都遵循某種約定,只是不知道它是什麼……

RPM 使用 soname 跟踪庫,就像 ELF 連結器/載入器一樣。

當將版本符號添加到 glibc 時,RPM 在第一組括號內附加了唯一版本。有關許多範例,請參見“rpm -q –fileprovide glibc”。

添加 multilib(同一系統上的 32 位和 64 位庫)時,會附加一個“(64 位)”標記以進行區分。

不幸的是,溝通不暢導致在沒有版本符號的庫中添加了一個空的“()”。原則上,符號版本會出現在空的“()”中,但除了 glibc 之外,很少有庫使用符號版本控制。

引用自:https://unix.stackexchange.com/questions/352014