RPM은 기호가 필요하고 존재하는지 어떻게 확인합니까?

RPM은 기호가 필요하고 존재하는지 어떻게 확인합니까?

rpm 패키지를 설치할 때 가끔 다음 메시지가 보고됩니다.

libc.so.6(GLIBC_2.3)(64bit) is needed by xxx.rpm

RPM이 이를 어떻게 파악하는지, 기호에 체크포인트를 추가하는 방법을 알고 싶습니다.

이는 rpmbuild 중에 완전 자동 프로세스인 것 같지만 확실하지 않습니다.

아는 사람 있나요?

답변1

새 rpm을 빌드할 때 이 rpmbuild명령은 기본적으로 확인합니다.모든 종속성이 rpm에 속하는 바이너리(사용종속성 생성기). 일반적으로 도우미 스크립트1 이 있습니다 .find-requires2%files% rpms 섹션에서 모든 파일의 종속성을 확인합니다 .

$ echo /usr/bin/tree | /usr/lib/rpm/find-requires
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)

그런 다음 rpm 메타데이터에 다음 요구 사항을 추가합니다.

$ rpm --requires -q tree | grep libc
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)

다음 종속성을 사용하여 rpm 목록을 얻을 수 있습니다.

rpm --whatrequires -q 'libc.so.6(GLIBC_2.3)(64bit)'

어떤 패키지인지 확인할 수도 있습니다.공급(또는 충족) 다음 종속성을 충족합니다.

$ rpm --whatprovides -q 'libc.so.6(GLIBC_2.3)(64bit)'
glibc-2.22-114.22.1.x86_64

1 일반적으로 이 도우미 스크립트는 rpmbuild.

2 스크립트는 다른 도우미 도구를 사용하여 요구 사항을 추출합니다.rpmdeps또는elfdeps:

$ /usr/lib/rpm/rpmdeps -R /usr/bin/tree 
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)

$ /usr/lib/rpm/elfdeps --requires /usr/bin/tree
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6()(64bit)

관련 정보