我在我的java项目中使用jnetpcap v1.3,它用于本机调用的so文件依赖于libpcap0.9,但我的libpcap版本是0.8,在apt存储库中找不到这个库。
那么如何在 debian wheezy 上安装 libpcap0.9 来解决这个依赖问题呢?
ps:使用命令' ld libjnetpcap.so '我发现了损坏的依赖链接。
它用于本机调用的 so 文件依赖于 libpcap0.9
Debian 没有libpcap0.9:
https://packages.debian.org/search?keywords=libpcap&searchon=names&suite=stable§ion=all
https://packages.debian.org/search?keywords=libpcap0.9&searchon=names&suite=stable§ion=all
似乎曾经有过一个 libpcap0.9,但他们摆脱了它,因为它没有存在的理由。正如该报告所说,“不再需要 libpcap0.9 源包,结果表明 libpcap 0.9 版的 API 和 ABI 与 libpcap0.8 兼容”。
如果 API 或 ABI 以不兼容的方式更改,他们可能只会将名称更改为“libpcap0.8”以外的名称,并且我无意让已发布的 libpcap API 或 ABI 以破坏兼容性的方式更改使用早期版本的 libpcap 构建的程序(请注意,pcap_t
结构的布局不是已发布 API 或 ABI 的一部分......)。因此,只要我是 libpcap 核心开发人员,libpcap 1.N+1 版本的 API 和 ABI 将与 1.N 版本兼容,尽管它可能具有新功能 - 任何使用 1.N 构建的程序都可以使用1.N+1,虽然使用 1.N+1 构建的程序,如果他们使用这些新功能中的任何一个,将无法与 1.N 一起使用(这就是软件的工作方式)。
查看其 SVN 存储库中的 jnetpcap 源代码,该releases/jnetpcap-1.3/release-1.3.0-1/src/deb/jnetpcap-1.control
文件显示:
Depends: libpcap-dev (>= 0.8)
并且 0.8 肯定 >= 0.8,因为它是 =(或者,如果你正在编写 C 代码,==)0.8。
较早的 jnetpcap 版本具有
Depends: libpcap0.8 (>= 0.9)
但即使这样也不应该产生对“libpcap0.9”的依赖,它应该产生对libpcap0.8的依赖,版本号> = 0.9。
而且wheezy 的 libpcap0.8 版本号为 1.3.0-1,而 1.3.0-1 >= 0.9,所以 wheezy 对依赖于 "libpcap0.8 (>= 0.9 )”,除非 1) Depends: 行并不意味着我期望它的意思或 2) 依赖检查被破坏并且它没有意识到 libpcap 1.3.0 肯定比 libpcap 0.9 晚。