나는 그러한 라이브러리(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
파일과 패키지를 혼합하고 있다고 생각합니다.
라이브러리가 디스크에 존재한다고 해서 종속성을 해결하는 데 사용할 수 있다는 의미는 아닙니다. 이렇게 하려면 이 라이브러리를 제공하는 패키지가 있어야 합니다.
반면에 종속성 해결의 경우 파일이 실제로 존재할 필요조차 없습니다. 일부 설치된 패키지가 제공한다는 사실만으로 충분합니다.