RPM이 설치된 다른 패키지의 종속성 요구 사항을 충족하도록 만듭니다.

RPM이 설치된 다른 패키지의 종속성 요구 사항을 충족하도록 만듭니다.

그래서 저는 jnetpcap을 사용하여 제가 작성한 Java 애플리케이션을 설치하려고 합니다. 이를 위해서는 libpcap이 v1.0.0 이상이어야 합니다. 내 CentOS 5.8에는 설치된 다른 패키지에 필요한 libpcap 0.9.4만 있습니다. libpcap 1.4.0의 RPM을 구축했지만 이를 설치하려고 하면 다음과 같은 결과가 나타납니다.

# rpm -Uvh /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm
error: Failed dependencies:
        libpcap.so.0.9.4 is needed by (installed) ppp-2.4.4-2.el5.i386
        libpcap.so.0.9.4 is needed by (installed) isdn4k-utils-3.2-56.el5.i386
        libpcap >= 14:0.8.3-6 is needed by (installed) ppp-2.4.4-2.el5.i386

그리고 그 중 하나의 종속성을 확인하십시오.

# rpm -qR ppp-2.4.4-2.el5.i386
...
libpcap >= 14:0.8.3-6
libpcap.so.0.9.4

운영체제 업데이트도 불가능하고, 인터넷에 절대 연결되지 않는 폐쇄형 시스템이므로 상관없습니다. 지금 나는가능한지연되는 패키지를 제거할 수 있지만 그렇게 할 수 없다고 가정할 경우 이전 종속성 요구 사항을 충족하도록 이 패키지를 강제로 설치하려면 어떻게 해야 합니까? 즉, 설치된 소프트웨어의 요구 사항을 충족하도록 libpcap 0.9.4를 "제공"하도록 만드세요.

답변1

이 파일의 소스 rpm을 변경하는 것이 좋습니다. 설치하려는 파일과 제공된 파일 사이에 충돌이 발생하지 않도록 파일이 설치될 경로를 편집하십시오 libpcap.so.0.9.4(동일한 경로에 동일한 파일을 제공하는 두 개의 rpm). 설치하면 안 됩니다:s) .

또는 설치한 것과 충돌하는 파일을 소스 rpm에서 제거하십시오. src rpm:s .spec 파일에서 /usr/lib/libpcap.so.0또는 /usr/share/man/man3/pcap.3.gz.(하나는 심볼릭 링크이고 다른 하나는 매뉴얼 페이지)일 수 있습니다.

그런 다음 설치할 수 있습니다(업그레이드 아님)./root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm libpcap-0.9.4와 함께따라서 이러한 버전이 시스템에서 평화롭게 공존할 수 있습니다.

yum을 사용하는 경우 yum이 이전 버전의 libpcap()을 방금 만든 버전으로 바꾸지 않도록 목록에 /etc/yum.conf추가하도록 편집할 수 있습니다 . (일반 rpm 대신 yum을 사용하면 모든 트랜잭션을 추적하는 데 사용할 수 있습니다 . 매우 강력합니다.) 소스 rpm에 있는 파일의 이름을 제가 일반적으로 하는 것과 유사한 이름으로 변경할 수도 있습니다 .libpcapinstallonlypkgsman 5 yum.confyum history.speclibpcap14

$LD_LIBRARY_PATH그런 다음 프로그램을 시작하는 스크립트/명령에 설치 패키지 경로를 추가하면 작동합니다. (또는 LD_PRELOAD최신 버전의 libpcap을 사용하십시오).

또한 slm이 제안하는 것을 수행할 수도 있습니다. 이는 목표를 달성하는 가장 빠른 방법입니다. rpm2cpio /root/rpmbuild/RPMS/i386/libpcap-1.4.0-1.i386.rpm > libpcap-1.4.0-1.i386.cpio그런 다음 별도의 폴더에 아카이브를 추출하고 위의 파일을 사용하십시오. 하지만 rpm은 CentOS의 프로그램 전달 방식이고, 장기적으로 봤을 때 지저분하고 유지 관리가 어렵다고 생각합니다.

조치를 취해야 하는 또 다른 이유는 libpcap v0.9.4에 의존하는 모든 것을 v1.0.0으로 다시 빌드하고 업그레이드하기 때문일 수 있습니다. 일반적으로 이는 향후 업데이트에 문제가 있음을 의미하지만 CentOS 5를 사용하는 것으로 나타나므로 단종되었으므로 걱정할 필요가 없습니다.

고려해야 할 마지막 옵션은 yum remove libpcap삭제하려는 패키지 수를 확인하는 것입니다( yumY 버튼을 누르고 Enter를 누를 때까지 실제로 아무것도 삭제되지 않습니다).가능한이러한 패키지를 제거하고 yum을 사용할 수 있습니다. 그렇게 할 수 없는 경우 yum history undo명령을 사용하여 롤백할 수 있습니다. (yum의 어떤 버전에서 이것이 yum에 구현되었는지 기억이 나지 않으므로 먼저 이 하위 명령을 사용할 수 있는지 확인하십시오. 당신에게) . 또한 저장소가 이러한 파일이 포함된 사용 가능한 저장소를 가리키는지 확인하십시오.

관련 정보