我是 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 个赞
neo
(Neo)
2
怎么回事,正经的 linux 帖子不顶能行?省的大家说这里不讨论 linux
46 个赞
Paru 更准确来说是包管理助手,安装的时候会发现它实际上做的是:
- 从 AUR 下载 PKGBUILD;
- 执行
makepkg
;
- 用 Pacman 安装。
当然后续它还会维护安装的软件包的列表,方便更新,本质上和直接从源码编译安装的时候那个 Makefile
提供的功能没有区别(事实上 AUR 很多软件包确实是源码编译的)。
不过 Paru 确实好用就是了。
11 个赞
我好像一般arch就yay/pacman
Ubuntu就 apt
4 个赞
在 Ubuntu 上用 Pacman?
好像还真有,BlendOS,DistroBox 实现。不过我不大喜欢这种缝合怪。
你觉得 APT 和 Pacman 哪个更符合日常使用需求?
35 个赞
Ubuntu就直接apt
感觉这些包管理器特点不是很明确
再多的我也没用过了佬
20 个赞
nix我在用,他不算是在用容器把,就是各种ln
把各种命令全部ln到/nix下面的一个巨长无比的目录
支持多版本共存,也全靠ln
8 个赞
stevessr
(Stevessr)
12
20 个赞
是的,NixOS 确实不算是容器化,我只是比喻一下 
NixOS 我没怎么用过,但是印象最深的是(作为一个退役 OIer):
不过我还是比较感兴趣的,过几天装个虚拟机试试。
3 个赞
哦,怪不得每次 APT 安装都得顿一下。
Pacman 并行下载对我没啥用,我家带宽很小(三百兆,但是均摊到设备就只剩百兆了),基本下载可以跑满。
至于 Snap,呃……这玩意儿让我坚决地不肯使用 Ubuntu 桌面版。始终觉得 Snap/Flatpak/AppImage 这类打包依赖的做法我一直觉得很恶心。
13 个赞
obrook
15
没用过其他的,apt感觉还好,慢一点也不是大问题
主要是习惯了吧,除非有大问题,要不没时间学重新学一套新的
也看主流用哪个多点,出了问题好搜答案
8 个赞
APT 的用户数量一直是传统优势,但是这几年 Arch Linux 慢慢火起来,胜在用户平均活跃度高,而且有很完善的官方 Wiki。
但是我觉得可以把 Pacman 和 tar 并列为最恶心命令行参数两大魔头。
23 个赞
obrook
17
Arch Linux文档不错,ubuntu 很多都是在那里找到的答案
2 个赞
ttitoo
(ttitoo)
18
多版本的意义在于?目前我能想到的就是各个语言需要多版本,但是这个可以用类似于asdf这种工具来完成
12 个赞
其他人我不知道,对我来说是这样的:
nixos在修改nixos配置后,更新系统使用nixos-rebuild命令后,会生成一个"还原点"
他不会删除或者覆盖旧的软件包目录,而是直接下载新的软件包到/nix/store目录下面的一个新目录下,最后修改ln指向新的软件包
然后在系统启动时,可以在grub菜单选择从旧版本的配置上面启动
通过这个操作,可以实现当更新软件/系统后发现新版本软件/系统有问题,直接从旧版本系统上面启动,非常方便(不会滚挂的系统)
11 个赞
stevessr
(Stevessr)
20
可以满足不同的项目在同一台机子上使用时互相冲突的依赖
就比如看见一个人在博客中写自己同时有维护公司的nodejs项目和学习新框架的需求
10 个赞