von*_*hev 33 linux package-management
为什么没有充当最终用户和下面的低级封装管理器(之间的界面的统一包管理器apt,yast,pacman等)?
是很难做到因此不切实际,还是存在真正的障碍使其无法做到?
Cal*_*leb 38
首先,有。问题不在于没有统一的包管理器,问题在于有十个——严重。
让我们拿我最喜欢的:poldek。它是包管理用户前端,可以在几个不同的发行版运行和管理两种rpm或deb包。Poldek 不做 rpm 做的事情(它把它留给 rpm),只是发送正确的命令,而用户不必弄清楚所有这些混乱。
但问题还不止于此。每个人对用户前端应该是什么样子,它应该如何运作以及它应该公开哪些选项都有不同的想法。所以其他人也写了自己的。实际上,当今人们在常见发行版中使用的许多软件包前端管理器都能够处理多个后端。
然而,归根结底,问题(或优势)是人们喜欢事物完全按照他们想要的方式运作,而不是以某种试图满足每个人却未能真正让任何人快乐的元时尚。这就是我们首先拥有无数发行版的原因。这就是我们有这么多不同的桌面环境和窗口管理器的原因(事实上它们实际上是不同种类的东西)。
关于编写通用包的方法或拥有一个了解所有包的管理器或拥有一个用于将一个包转换为另一个包的 api 的方法仍然有出色的建议......但最终Unix 最好根据其哲学使用......做一件事并且做得很好。
任何时候当你有一个工具试图做不止一件事时,它最终都不擅长其中之一。例如,poldek处理 deb 包依赖关系很糟糕。
roz*_*acz 10
简而言之:因为每个发行版都使用不同的包管理方法。它们根本不兼容。最适合 Ubuntu 的管理策略在 Arch 等上没有什么意义。“通用”(独立于发行版)包管理器只是用户界面的附加层,永远不会像每个发行版的特定管理器一样好用。
所以,用你自己的话来说,这很难做到,因此不切实际——也因为几乎没有人会从中受益。
Con*_*lls 10
历史原因,主要是。大约在同一时间建立了几个包管理系统 - 特别是 .rpm 和 .deb。每个都有它的拥护者,每个都足够好,以至于没有一个包管理器具有引人注目的优势。分销商当然不会看到彻底重建他们的系统以实现不同的包管理器的意义。
这也需要重新构建系统中的每个包(在 debian 的情况下为 10,000 个)。它还需要实施一个平滑的迁移系统,以便系统的用户可以从旧的包管理器迁移到新的包管理器。迁移的工作量会非常大,而且测试迁移的工作量会呈指数级增长,因此您几乎肯定会遇到很多问题。这会产生许多愤怒的下注者。
每个发行版都根据为该版本构建的内容维护自己的一组依赖项。由于几乎肯定会出现依赖性冲突,因此通用包存储库将很难在发行版之间进行协调。因此,在实践中无论如何都无法实现统一包管理系统(通用包)的实际好处。
最后,谁可以选择通用标准包管理器?OP 评论中引用的 XKCD 漫画总结了此类练习中的常见失败模式。对这类事情进行标准化将是非常政治化的,并且可能会导致一些不可用的东西,或者存在严重缺陷,以至于引发另一轮关于标准的争论——如果各方能够达成一致的话。
所以,基本上归结为:太政治化,太难,太冒险,这样做没有任何好处。
你所描述的,
充当最终用户和底层低级包管理器之间的接口
对我来说听起来有点像 PackageKit,也就是说,
PackageKit 是一个旨在简化计算机上软件安装和更新的系统。主要设计目标是统一不同发行版中使用的所有软件图形工具,并使用一些最新的技术(如 PolicyKit)来减少流程的麻烦。
编辑: 有关支持的后端列表,请参见此处。 Edit2:删除了无用的评论。
首先,了解“Linux”不是操作系统。它是一个内核。包管理器是操作系统级别的概念,而不是内核级别的概念。因此,要求为 Linux 提供统一的包管理器并不是很明智。
但是,如果您要问为什么使用 Linux 内核的各种操作系统没有兼容的包管理器,那么您可能会问为什么 Windows 和 Mac 没有兼容的包管理器。或任何其他两个操作系统。
不同的操作系统迎合不同用户的需求,包管理器就是其中的一部分。为什么不是所有的 Linux 发行版都有相同的窗口管理器?还是附带所有相同的预装软件?
答:不同的人有不同的招数。