为什么Linux安装软件时有这么多依赖问题,而Windows除了VC++等少数几个没有?

为什么Linux安装软件时有这么多依赖问题,而Windows除了VC++等少数几个没有?

我是一名 Windows 用户,在工作中我还需要大量使用 Linux 发行版。由于所有依赖项缺失/版本未升级/操作系统发行版版本不匹配,安装软件非常困难。

并不是说我不欣赏 Linux 的优点。我只是想知道原因。 Windows 如何处理这个问题?是因为 Windows fat installer 捆绑了所有依赖项吗?

具体来说,我们以 Ubuntu 和 apt 为例。每当操作系统升级时,例如从精确到可信,依赖关系就会中断。很多时候的解决方法就是继续使用旧版本。当然,开发人员应该测试并确保它与新的操作系统版本兼容,并在存储库中进行标记。

答案1

简而言之,Windows 安装程序通常包含所有必需的库(作为 DLL),这些库通常安装到与应用程序相同的目录中,并且通常只能由该应用程序使用。这意味着,如果您有两个或三个使用相同源库(例如,压缩库或 GUI 元素)的 Windows 产品,它们都将安装相同的 DLL,但可能版本不同。

这会导致膨胀,并可能导致安全漏洞,因为补丁可能无法一致地应用于同一库的所有已安装副本。

一些共享库确实存在(显然,包括操作系统提供的库),在这种情况下,您需要确保已安装它们,并且没有简单的内置 Windows 解决方案(它通常由安装程序本身处理)。

现代 Linux 发行版附带了包管理器,它应该处理发行版存储库中任何应用程序的依赖关系。这是打包发行版的大部分工作(以及定制元素以提供一致性)。例如,apt处理 Debian 中的依赖关系,因此您无需担心,只要您从 Debian 存储库进行安装即可。

如果您要下载并安装自己的软件包或从源代码进行编译,那么您需要自己管理依赖项。

相关内容