为什么 Linux 软件包管理如此复杂?

为什么 Linux 软件包管理如此复杂?

在 Windows 上,通常可以通过将 zip 文件解压到任意目录中来安装简单程序。恕我直言,这是保持简单的绝佳示例。例如,它允许在没有 root 访问权限的情况下安装简单程序。为什么很少有 Linux 二进制文件打包为独立的 .zip 文件、tarball 等?为什么在 Linux 上执行操作的标准方法是使用花哨的包管理器来处理即使是简单的程序?

答案1

我认为您严重误解了程序的安装和运行方式。

您可以将一些程序下载到 *nix 机器上并直接运行它们。您还可以将程序安装到您的主目录中,这比在 Windows 中尝试仅安装“我的用户”要容易得多(这几乎从不起作用)。

大多数 *nix 系统都包含一个包管理系统,可帮助您控制依赖关系。Windows 中没有这样的系统。处理过 Windows 依赖关系问题的系统管理员通常将此问题称为 DLL Hell。

WinSxS 试图缓解部分问题,但代价是占用大量硬盘空间,而且卸载旧程序时它无法保持自身清洁。它无法保持自身清洁的一个主要原因是 Windows 没有跟踪机制来了解安装了哪些 DLL、哪些 DLL 依赖于它们、在哪里可以找到更新版本等。

所有这些功能都已融入到大多数包管理系统中,以避免 DLL Hell 并使您的系统在更新/升级和不匹配的依赖关系下保持运行。

答案2

并不是很多 Windows 应用程序都是以单个可执行文件的形式提供的,大多数应用程序都需要使用安装文件来安装其他文件,安装文件会将文件放入特定位置并编辑注册表。Linux 软件包也一样,而且有很多应用程序都是独立的,基本上我看不出有什么区别。

答案3

事实上,我发现包管理器更容易使用,因为它们是查找大多数软件的中心位置。包管理器还负责软件的安装,而我发现提取存档文件有点令人困惑。

相关内容