我正在研究 FreeBSD 11 并已经使用程序作为tcpdump
依赖项,它具有libpcap
和libsmi
作为依赖项。
我还想安装tshark
Wireshark 的控制台版本。即使 tshark 有自己的捕获功能,我也必须保留 tcpdump 安装。 Tsharklibsmi
以及 和 列为依赖项libgpg-error, libgpg-error, libgnutls, gnutls, libgcrypt, libgcrypt, libGeoIP, GeoIP, libsmi, libintl, gettext-runtime, libglib-2.0, glib20, libintl
,py-pyshark
其中任何一个都可能已安装或使用版本。该man
页面还声明它使用pcap
,尽管这没有出现在 freshports 的列表中。
是否有任何问题,或者我可以像pkg install tshark
往常一样,操作系统会解决它吗?出于兴趣,FreeBSD 如何处理这种常见情况?
新鲜港链接: 网络/tcpdump, 网/tshark
答案1
通常这不会成为问题。 FreeBSD(以及一般基于 Unix 的操作系统)使用动态链接,因此多个程序可以使用相同的依赖项。依赖项只需安装一次。
只要包可以使用相同版本的依赖项,就应该没问题。当两个程序需要同一库的不同版本或无法共存的库的不同实现时,有时会出现兼容性问题。但通常情况下,一切正常。
答案2
这不是问题。依赖项列表就是特定包在运行之前需要安装的包列表。最终的依赖是必须安装FreeBSD!
存在依赖项列表,以便pkg
可以安装任何尚不存在的依赖项。
如果你安装了包 A,并且它引入了依赖项 B,那当然没问题。如果您随后安装包 C,它也需要 B,它已经在那里,所以什么也不会发生(但它仍然被 记住pkg
)。
更重要的是,如果您随后卸载软件包 A,那么惯于卸载软件包 B,因为软件包 C 仍然需要它。
这似乎并不完美(尽管应该是)。有时您最终会得到孤立(“叶子”)包,任何东西都不需要它们(当然,有时您仍然需要它们)。该软件包pkg_cutleaves
对于清理这些很有用。