刚装上 Linux 的人,常会在同一件小事上卡住:想装个软件,却不知道敲哪条命令。

翻教程时会发现,有人让你用 apt,有人让你用 dnf,还有人写 pacman,或者 zypper。

明明是同一个动作,为什么会有四种说法。

这不是有人故意折腾新手,背后是一段从九十年代讲起的分家史。

先说清楚,在 Linux 上装软件,到底是谁在干活。

有一个东西专门替你干这件事,它叫包管理器。

所谓「包」,就是把程序和它要用到的文件,一起装进一个盒子里。

而「仓库」不是随便一个下载站,是发行版自己整理好的名单,写着每个包是谁维护的、对应什么版本。

名单上那些包,多半不是厂商自己塞进去的,是发行版的维护者打包放进去的。

你告诉包管理器想要什么,它去仓库里找,把要凑的东西一起取回来,装好,再记上一笔账。

记账这一条最容易被忽略,却最要紧。

有了这本账,卸载才卸得干净,升级也才知道该动哪几个包。

今天的包管理器还要管另外几件事:包有没有被人改过、来源可不可信、装到一半失败怎么退回去。

平时你不一定直接见到它:图形界面里那个软件管理器、任务栏上的更新提示,背后都是它在做事。

如果没有它,装软件会是什么样。

早年就是这样:程序自己下、源码自己编译,缺哪个库自己去补。

打开网易新闻 查看精彩图片

麻烦的根子在依赖:一个软件背后常常站着十几个库,库还有版本要求,谁先谁后都有讲究。

更麻烦的是版本:这个软件要老版本,那个要新版本,两个凑不到一块,就装不上了。

有时候为了装一个东西,一晚上就搭进去了。

所以很快有人想把这活交出去。

1994 年,Debian 项目先做了一个小工具,叫 dpkg。

它能按清单把一个包铺进系统,但缺了别的东西,得你自己补。

1998 年,同一个项目又做了一个更聪明的:apt。

它会自己上网把缺的东西取回来,再按顺序装好。

几乎同一时候,红帽那边做出了 RPM,思路差不多,规矩不一样。

分家就是从这里定下来的。

打开网易新闻 查看精彩图片

Debian 家用 .deb 格式的包,红帽家用 .rpm,两边的包不能混着装。

各自的工具,也只认自己那一套格式。

为什么会这样?因为 Linux 从来不是一家公司做出来的东西。

内核是一拨人在写,发行版是各个团队自己拼的,谁也没义务听谁的。

大家各做各的,时间一长,就有了各自的习惯和各自的工具。

2002 年,Arch 这个发行版出来的时候,干脆自己写了一个 pacman。

到今天,能叫得上名字的包管理器已经是一大串。

为什么不能干脆统一成一种?技术上不算难,难的是规矩。

发版的节奏、测试的流程、签名的方式、出了事谁负责,各家都不一样。

这些事谈不拢,格式也就统一不了。

而且各家也不想改:老规矩用了几十年,用户、文档、脚本全围着它转,动一下就伤一大片。

对你来说,最直接的感受是换一家就得重新学一遍。

从 Debian 系换到红帽系,第一件不习惯的事,就是命令全变了。

同一个软件,在不同家里的包名也可能不一样。

网上抄来的教程,往往只在作者那一系上成立。

所以老手写文档时,常常先问你用的是哪一系,再决定写哪条命令。

于是新手的印象就是:Linux 好麻烦。

其实麻烦的不是操作,是说法太多。

真要说操作,四家做的事几乎一样:装、卸、升级。

Debian 家敲 apt,红帽家敲 dnf,Arch 敲 pacman,SUSE 敲 zypper。

学会一家,换到另一家,看一眼帮助就能猜出来。

如果你用的是一台常见的发行版,那多半属于 Debian 这一系,命令就是 apt。

给你一个具体的感受:我这台电脑上,系统自己就装了 2582 个软件包。

这些包互相依赖,全靠包管理器在中间记账,手工维护想都不敢想。

早就有人受不了这种各自为政,做了一个哪一系都能用的装法。

Flatpak、Snap、AppImage 这类格式,相当于一个万能插头。

打开网易新闻 查看精彩图片

不管你用的是哪一系,同一个软件都能这么装上。

代价也不小:包更大,各装各的,跟系统自带的那套还是两回事。

所以今天两种办法并存,各有各的用处。

回到最开始那个问题:四种说法,不是四家要争个高低。

它们只是碰上了同一个问题,各答了一次。

Linux 世界就是这样长起来的,没有一个中心来拍板。

你用的那一家,命令是固定的,学会一套就够用了。

剩下的那些名字,知道它们存在就够了。