为什么Linux在安装软件时有这么多依赖问题而Windows除了像VC++这样的少数之外没有?

Boy*_*ang 1 yum dpkg apt dependencies software-installation

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

并不是说我不欣赏有关 Linux 的好东西。我只想知道原因。Windows 如何处理这个问题?是因为 Windows 胖安装程序捆绑了所有依赖项吗?

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

Eig*_*ony 6

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

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

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

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

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

  • 实际上,`apt` 处理依赖关系,而不是 `dpkg`。 (2认同)