FreeBSD 如何处理安装两个共享共同依赖项的软件包?

FreeBSD 如何处理安装两个共享共同依赖项的软件包?

我正在研究 FreeBSD 11 并已经使用程序作为tcpdump依赖项,它具有libpcaplibsmi作为依赖项。

我还想安装tsharkWireshark 的控制台版本。即使 tshark 有自己的捕获功能,我也必须保留 tcpdump 安装。 Tsharklibsmi以及 和 列为依赖项libgpg-error, libgpg-error, libgnutls, gnutls, libgcrypt, libgcrypt, libGeoIP, GeoIP, libsmi, libintl, gettext-runtime, libglib-2.0, glib20, libintlpy-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对于清理这些很有用。

相关内容