Linux 发行版包管理器比较

我是 Arch Linux 用户,之前也用 Debian Stable 和 Ubuntu 很长时间。不知道是不是我的错觉,Pacman 总体而言感觉比 APT 快很多。

服务器上我也在用 DNF,但是感觉还是没有 Pacman 快。尤其是卸载软件的时候,Pacman 回车一按感觉半秒就结束了,但是 DNF 和 APT 最后结束之前都会顿一下。

所以我真正想问的问题是,大家觉得各个 Linux 发行版的包管理器从易用性、功能性和效率上来说,哪一个是最适合的?

就我自己的观点而言,虽然 I use Arch BTW,但是我主要看中的是它的新软件包和方便的 AUR,不是什么狂热的 Arch 教徒。据说 Pacman 最大的问题是不支持虚包,也就是除非手动编译安装,大部分包都不能多版本共存。MSYS2 的包管理器是 Pacman 魔改的。

Debian 系的 APT 以及一系列衍生和前端(AOSC 的小熊猫、Deepin 的玲珑),功能性上肯定没的说,但是似乎过分集成以至于速度很慢,并且由于包一致性的考虑不允许,或者至少说不推荐使用多个镜像站。

更新:感谢佬友提醒,玲珑是通用包管理器而不是 APT 前端。

RHEL 系的 DNF 我似乎没发现什么特点:速度一般,功能平庸。但是作为服务器发行版,似乎没有特点就是最大的优点。DNF 好像不太能处理发行版大版本升级的问题,它的插件我用来升级没几次不需要我手动操作的。

至于其他小众管理器,NixOS 的 nix(据说容器化用得很多)、Alphine Linux 的 APK(最近 OpenWRT 改用)、Slackware 的 pkgtools(死了?没有;功能非常少,只是几个脚本)、Gentoo 的 Portage(源码!啊哈哈哈!),我不大熟悉,使用的同学也可以说说。

什么?LFS?

202 个赞

怎么回事,正经的 linux 帖子不顶能行?省的大家说这里不讨论 linux

46 个赞

linuxdo就应该讨论linux

11 个赞

感谢始皇支持

5 个赞

paru yyds

17 个赞

Paru 更准确来说是包管理助手,安装的时候会发现它实际上做的是:

  • 从 AUR 下载 PKGBUILD;
  • 执行 makepkg
  • 用 Pacman 安装。

当然后续它还会维护安装的软件包的列表,方便更新,本质上和直接从源码编译安装的时候那个 Makefile 提供的功能没有区别(事实上 AUR 很多软件包确实是源码编译的)。

不过 Paru 确实好用就是了。

11 个赞

我好像一般arch就yay/pacman
Ubuntu就 apt

4 个赞

在 Ubuntu 上用 Pacman?

好像还真有,BlendOS,DistroBox 实现。不过我不大喜欢这种缝合怪。

你觉得 APT 和 Pacman 哪个更符合日常使用需求?

35 个赞

Ubuntu就直接apt
感觉这些包管理器特点不是很明确 :face_with_open_eyes_and_hand_over_mouth:再多的我也没用过了佬

20 个赞

nix我在用,他不算是在用容器把,就是各种ln

把各种命令全部ln到/nix下面的一个巨长无比的目录

支持多版本共存,也全靠ln

8 个赞

Linux 添加

pacman - ArchWiki — pacman - ArchWiki
pacman可以开启并行下载
ilikenwf/apt-fast: apt-fast: apt 的 shellscript 包装器,可加快包的下载速度。
apt-fast是对apt/apt-get/aptitude 的并行下载包装(使用aria2c)
apt要等待 dpkg
邪恶的snap

20 个赞

是的,NixOS 确实不算是容器化,我只是比喻一下 :smile:

NixOS 我没怎么用过,但是印象最深的是(作为一个退役 OIer):

不过我还是比较感兴趣的,过几天装个虚拟机试试。

3 个赞

哦,怪不得每次 APT 安装都得顿一下。

Pacman 并行下载对我没啥用,我家带宽很小(三百兆,但是均摊到设备就只剩百兆了),基本下载可以跑满。

至于 Snap,呃……这玩意儿让我坚决地不肯使用 Ubuntu 桌面版。始终觉得 Snap/Flatpak/AppImage 这类打包依赖的做法我一直觉得很恶心。

13 个赞

没用过其他的,apt感觉还好,慢一点也不是大问题

主要是习惯了吧,除非有大问题,要不没时间学重新学一套新的

也看主流用哪个多点,出了问题好搜答案

8 个赞

APT 的用户数量一直是传统优势,但是这几年 Arch Linux 慢慢火起来,胜在用户平均活跃度高,而且有很完善的官方 Wiki。

但是我觉得可以把 Pacman 和 tar 并列为最恶心命令行参数两大魔头。

23 个赞

Arch Linux文档不错,ubuntu 很多都是在那里找到的答案

2 个赞

多版本的意义在于?目前我能想到的就是各个语言需要多版本,但是这个可以用类似于asdf这种工具来完成

12 个赞

其他人我不知道,对我来说是这样的:

nixos在修改nixos配置后,更新系统使用nixos-rebuild命令后,会生成一个"还原点"
他不会删除或者覆盖旧的软件包目录,而是直接下载新的软件包到/nix/store目录下面的一个新目录下,最后修改ln指向新的软件包
然后在系统启动时,可以在grub菜单选择从旧版本的配置上面启动

通过这个操作,可以实现当更新软件/系统后发现新版本软件/系统有问题,直接从旧版本系统上面启动,非常方便(不会滚挂的系统)

11 个赞

可以满足不同的项目在同一台机子上使用时互相冲突的依赖
就比如看见一个人在博客中写自己同时有维护公司的nodejs项目和学习新框架的需求

10 个赞