
그래서 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에 있는 파일의 이름을 와 같이 변경할 수도 있습니다 . 제가 일반적으로 그렇게 합니다.libpcap
installonlypkgs
man 5 yum.conf
yum history
.spec
libpcap14
그런 다음 프로그램을 실행하는 스크립트/명령에 패키지를 설치한 경로를 추가하면 $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
제거하려는 패키지 수를 확인하는 것입니다( yum
Y 버튼을 누르고 Enter를 누를 때까지 실제로 아무것도 제거되지 않습니다).5월이러한 패키지를 제거하고 yum을 사용할 수 있습니다. 결국 사용할 수 없는 것으로 판명되면 yum history undo
명령을 사용하여 롤백할 수 있습니다. (yum의 어떤 버전에서 이것이 yum에 구현되었는지 기억이 나지 않으므로 이 하위 항목이 있는지 먼저 확인하십시오. 명령을 사용할 수 있습니다). 또한 이러한 파일을 사용할 수 있는 저장소를 가리키는 저장소가 있는지 확인하십시오.