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

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

그래서 jnetpcap을 사용하여 작성한 Java 앱을 설치하고 있습니다. 이를 위해서는 최소한 v1.0.0의 libpcap이 필요합니다. 내 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

OS 업데이트는 시작이 아니며 폐쇄형 시스템이므로 네트워크에 연결되지 않으므로 별 문제가 되지 않습니다. 지금5월작업을 지연시키는 패키지를 제거할 수 있지만 그렇게 할 수 없다고 가정하면 어떻게 이 패키지를 강제로 설치하여 이전 종속성 요구 사항을 충족할 수 있습니까? 즉, 이미 설치된 소프트웨어의 요구 사항을 충족할 수 있도록 libpcap 0.9.4를 "제공"하도록 합니다.

답변1

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

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

그런 다음 설치할 수 있습니다(업그레이드 아님)./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를 사용하는 것으로 나타나므로 EOL이므로 걱정할 필요가 없습니다.

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

관련 정보