rpm은 라이브러리 종속성을 어떻게 해결합니까?

rpm은 라이브러리 종속성을 어떻게 해결합니까?

나는 그러한 라이브러리(ldd의 출력)에 연결되는 패키지를 만들려고 합니다.

libwx_baseu-2.8.so.0 => /usr/lib64/wx-2.8-wxcontainer/libwx_baseu-2.8.so.0

아주 간단하죠? 그러나 rpmbuild를 사용하여 프로그램을 패키징한 다음 설치하려고 하면 rpm에서 라이브러리 누락에 대해 불평합니다(위 항목 참조).

오류: 종속성 실패:

    libwx_baseu-2.8.so.0()(64bit) 
    libwx_baseu-2.8.so.0(WXU_2.8)(64bit)

내 생각엔 rpmbuild가 기본 lib 디렉터리인 /usr/lib64에 대한 종속성을 설정하는 것 같습니다.

질문-- 이 문제를 해결하는 방법(글쎄, 강제로 설치하게 되지만 피하고 싶습니다)? 즉, wx-2.8-wxcontainer 하위 디렉터리(이 라이브러리의 경우)에 대한 종속성이 설정되도록 rpm을 빌드하는 방법은 무엇입니까?

중요한 경우 openSUSE 11.4를 사용하세요.

편집하다

설치를 강제하는 --nodeps를 사용하여 이러한 패키지를 설치할 수 있으며 그러면 설치 프로그램이 완벽하게 작동합니다. 분명히 시스템 자체가 아닌 rpm이나 rpmbuild에 문제가 있는 것입니다.

답변1

나는 이것이 현재 rpm/rpmbuild 버전의 제한이나 버그라고 생각합니다. 문제를 보고했기 때문에 어느 정도 질문에 대한 답변이 된 것 같습니다.

https://bugzilla.novell.com/show_bug.cgi?id=697943

항상 wx rpm을 쌍으로 설치해야 합니다. 하나는 실제 라이브러리가 있고 다른 하나는 단순히 "라이브러리 설치됨"이라고 표시된 패키지입니다.

  • libwx_baseu_net-2_8-0-wxcontainer-2.8.12-3.1.x86_64
  • libwx_baseu_net-2_8-0-호환성 라이브러리-wxcontainer-2.8.12-3.1.x86_64

두 번째 rpm이 없으면 패키지 관리자 및/또는 관련 응용 프로그램은 해당 wx 라이브러리가 존재하는지 여부를 알 수 없습니다.

답변2

하나 추가공급필드는 사양 파일 헤더에 기록됩니다. 예를 들어
lib_missing_complaint.so()(64비트)가 제공됩니다.

종속성이 ../로 시작되면 작동하지 않습니다.
이 경우
AutoReq를 사용하세요.

답변3

파일과 패키지를 혼합하고 있다고 생각합니다.

라이브러리가 디스크에 존재한다고 해서 종속성을 해결하는 데 사용할 수 있다는 의미는 아닙니다. 이렇게 하려면 이 라이브러리를 제공하는 패키지가 있어야 합니다.

반면에 종속성 해결의 경우 파일이 실제로 존재할 필요조차 없습니다. 일부 설치된 패키지가 제공한다는 사실만으로 충분합니다.

관련 정보