RPM 패키지 수정 및 종속성 제거

RPM 패키지 수정 및 종속성 제거

간단히 말해서:

우리는 종속성을 자동으로 감지하는 RPM 패키지를 구축했습니다( Requires문서에는 없음). .spec이 RPM 패키지에서 종속성을 제거하는 방법.

간단히 말해서: -> 바이너리와 함께 동적 라이브러리를 릴리스했지만 RPM 자동 종속성 메커니즘은 릴리스된 라이브러리도 종속성으로 나열한 것 같습니다. 이 상황을 피하는 방법은 무엇입니까?

답변1

rpm이 이러한 종속성을 자동으로 처리하는 것을 원하지 않습니다.

AutoReqProv: no

그러나 나는 내 자신의 바이너리와 그들이 의존하는 라이브러리를 여러 번 패키지했습니다. rpm은 나에게 그런 문제를 일으킨 적이 없습니다. 아마도 귀하의 패키지 방법이 최적이 아닐 수도 있습니다.

자동 종속성에 대한 추가 자료:http://ftp.rpm.org/max-rpm/s1-rpm-dependent-auto-dependent.html

답변2

나열된 종속성은 rpm -qp -requires <pkg>.rpm다음과 같습니다.가상 패키지만약에자동 종속성<pkg>.spec파일에 지정됩니다. 이러한 가상 패키지는 라이브러리가 아니라 soname가상 패키지 이름일 뿐입니다(비록 겉모습은 비슷하지만 soname).

예를 들어 Fedora 27에서는 이것이 작동합니다.

$ rpm -q --whatprovides "libQt5Core.so.5()(64bit)"        
qt5-qtbase-5.9.2-5.fc27.x86_64   

그러나 이것은 그렇지 않습니다

$ rpm -q --whatprovides libQt5Core.so.5
no package provides libQt5Core.so.5
$ rpm -q --whatprovides libQt5Core
no package provides libQt5Core
$ rpm -q --whatprovides Qt5Core
no package provides Qt5Core

이러한 라이브러리를 직접 번들로 묶는 경우 <pkg>.rpm(즉, 가상 패키지 제공) 이러한 가상 패키지가 패키지와 함께 제공되기 때문에 시스템에 설치되지 않은 경우 RPM은 불평하지 않습니다.

관련 정보