我已经构建了安装libpcap 1.7.4。
现在我想通过yum安装wireshark,但它提示需要依赖libpcap 1.4.0。
如何通过yum安装wireshark,但是使用我自己安装的依赖libpcap 1.7.4。
答案 0 :(得分:0)
原则上你不能。 CentOS存储库中的Wireshark动态链接到libpcap包中的libpcap。 wireshark二进制文件知道要搜索的内容(我的wireshark被编译为wireshark-gtk):
$ readelf -d /usr/bin/wireshark-gtk | grep libpcap
0x0000000000000001 (NEEDED) Shared library: [libpcap.so.1]
它将搜索libpcap.so.1
的动态库路径。 yum
知道它(因为打包器在制作RPM时很小心)并且不允许你在没有安装lib的情况下安装wireshark。无论你自己编写的是什么都无关紧要,责任包装商还没有看到它,因此yum
不会考虑它。
绝对没有什么可以做的。如果要通过libpcap-1.4.0
安装wireshark,则需要安装yum
。然而,这并不意味着当wireshark运行时你需要使用 libpcap-1.4.0
。
出于测试目的,GNU ld
(包含共享库的链接器)了解名为LD_LIBRARY_PATH
的环境变量。首先搜索该变量中的路径(目录)以加载共享库。因此,您可以执行以下操作:
$ export LD_LIBRARY_PATH=/path/to/your/compiled/libpcap
$ wireshark
这将加载wireshark并在从给定路径加载到内存中的libpcap而不是由yum
安装的libpcap(在/usr/lib
中)。请注意,您需要确保您有一个名为libpcap.so.1
的软链接指向libpcap.so.1.7.4
(该创建应创建它)。
免责声明:这可能会破裂!在生产环境中使用LD_LIBRARY_PATH
是一个非常糟糕的主意(但wireshark不是一个经常在关键任务环境中使用的软件)。您现在不依赖于发行版维护者(在最新系统的场景中测试他们的软件包),但是对于wireshark和libpcap的开发人员要小心不要引入破坏的向后兼容性(通常不会测试)。
理论上,没有什么可以破解,因为共享库中的sonames应该向后兼容。即libpcap-1.7.4
应与libpcap-1.4.0
完全向后兼容。但有时会弹出向后兼容性问题。