공유 라이브러리 파일의 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를 제외하고 기호 버전 관리를 사용하는 라이브러리는 거의 없습니다.

관련 정보