其实这个问题可以归结为Linux为什么没有统一的发行版。几大主流的发行版一个比较明显的差异在于对软体版本的支持程度。

Debian/Red Hat系很多被用在生产系统上,对软体的要求是稳定。所以他们每个版本支持的软体基本上固定在一些大版本上,会不时加入一些bug修复和安全更新,但是不会大幅跃进到新的大版本。这些固定的大版本都是经过严格测试的,所以更加可靠。

而Arch/Gentoo系列则多用于桌面系统,采用滚动更新的策略。用户可以在第一时间用到最新的版本,但是也存在遇到bug和安全漏洞的风险。不过桌面用户更多考虑的是用到最新的功能,对安全性可靠性的要求并不高。

正是这个差异产生了不同的发行版,从而使用不同的包管理器。


Linux是内核,所谓的Linux系统大多数都是GNU/Linux,都属于"Linux发行版",不同的发行版是不同的组织做出来的,每个组织最开始的意图,发行版的特性和遵循的哲学不一样,从而打包软体的方式不一样,包管理器显然不能统一


首先 linux 特指内核,而这些发行版准确说 GNU/Linux 在基础上添加了软体包。

那么,不同的人,它就有不同的添法。

用途不一样,那导致的结果有很大程度不一样。

ubuntu 社区觉得debian的apt包管理器好用。 redhat/centos 阵营。archlinux 阵营......

大家想法和需求都不一样,如何能够统一?


首先各个Linux发行版的包管理器技术上可以实现互用,比如你可以在arch上安装apt。

其次Linux发行版山头林立,谁有能耐发号施令统一包管理器?红帽有权让Ubuntu用dnf替换apt吗?是FSF,还是Linux Kernel Organization有能耐?很抱歉,它们都做不到?


我的体会,包管理器最大的用处是解决不同软体的依赖问题。但是依赖问题非常复杂,简单说有两大流派

  1. 始终用最新的,全部的基础库如libc, openssl会一直更新,应用层软体也始终是最新的。典型就是arch的pacman
  2. 固定在一个经过验证的版本不动,只做安全补丁,导致应用软体也会固定在某个版本区间。典型就是debian的apt

不同策略各有适用场景,没法统一。

选发行版就是选包管理器,也等于选了某种风格。当然你可以装多个包管理器,我就曾在gentoo上编译过pacman,但受限于对机制的理解,更新时把libc等底层包升得版本不匹配,导致整个系统不可用。


你直接问为什么没有统一的操作系统不就完了?


前有apt后有yum现在还有vcpkg,何言无物可用?


18路诸侯,谁也不服谁。

目前主要是两大门派:

apt

dnf


因为包管理这东西对Linux来说不是必须的


推荐阅读:
相关文章