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