为什么没有一个统一的包管理器来充当最终用户和底层低级包管理器(apt
、yast
、pacman
等)之间的接口?
是很难做到因此不切实际,还是存在真正的障碍使其无法做到?
答案1
首先,有。问题不在于没有统一的包管理器,问题在于有十个——说真的。
让我们以我最喜欢的为例:poldek
。它是包管理的用户前端,可以在多个不同的发行版上运行并管理一个rpm
或多个deb
包。 Poldek 不会做 rpm 所做的事情(它将它留给 rpm),而只是发送正确的命令,而用户不必弄清楚所有这些混乱。
但问题还不止于此。每个人对于用户前端应该是什么样子、它应该如何运作以及它应该公开哪些选项都有不同的想法。所以其他人也写了自己的。实际上,人们现在在常见发行版中使用的许多软件包前端管理器都能够处理多个后端。
然而,归根结底,问题(或优势)是人们喜欢事物完全按照他们想要的方式运作,而不是某种试图满足每个人却无法真正让任何人快乐的元时尚。这就是我们首先拥有无数发行版的原因。这就是我们有如此多不同的桌面环境和窗口管理器的原因(事实上这些实际上是不同类型的东西)。
对于编写通用包或拥有一个理解所有包的管理器或拥有一个将一个包转换为另一个包的 API 的方法,仍然存在一些突出的建议......但最终Unix 在按照其哲学使用时是最好的......每个工具只做一件事并且做得很好。
任何时候,当你有一个工具试图做不止一件事时,它最终会在其中一件事情上表现不佳。例如,poldek
在处理 deb 包依赖性方面很糟糕。
答案2
简而言之:因为每个发行版都使用不同的包管理方法。它们根本不兼容。最适合 Ubuntu 的管理策略对 Arch 等来说没有什么意义。“通用”(独立于发行版)包管理器只是用户界面的附加层,它永远不会像每个发行版的特定管理器那样工作。
所以,用你自己的话来说,就是很难做到,因此不实用- 还因为几乎没有人会从中受益。
答案3
你所描述的,
充当最终用户和底层低级包管理器之间的接口
对我来说听起来有点像 PackageKit,那是,
PackageKit 是一个旨在使计算机上的软件安装和更新变得更加容易的系统。主要设计目标是统一不同发行版中使用的所有软件图形工具,并使用一些最新技术(例如PolicyKit)来减少流程的糟糕程度。
编辑: 请参阅此处以获取支持的后端列表。 编辑2:删除了无用的评论。
答案4
首先,要明白“Linux”不是一个操作系统。它是一个内核。包管理器是一个操作系统级别的概念,而不是内核级别的概念。因此,要求 Linux 提供一个统一的包管理器实际上是没有意义的。
但是,如果您问为什么使用 Linux 内核的各种操作系统没有兼容的包管理器,那么您不妨问为什么 Windows 和 Mac 没有兼容的包管理器。或者任何其他两个操作系统。
不同的操作系统满足不同用户的需求,包管理器是其中的一部分。为什么并非所有 Linux 发行版都有相同的窗口管理器?或者预装所有相同的软件?
答:不同的人有不同的打法。