返回列表 发布新帖
查看: 21|回复: 0

Linux 包管理全攻略:apt 与 yum/dnf 从入门到精通实战指南

988

主题

0

回帖

833

积分

高级会员

积分
833
发表于 2026-6-25 02:05:01 | 查看全部 |阅读模式
玩Linux久了,绕不开的就是包管理器这道坎。Debian系用apt,Red Hat系用yum或者dnf,两套体系各有各的逻辑,初学者经常搞混,甚至换了发行版之后完全找不到北。今天就把我这几年踩坑的经验整理一下,希望对还在迷糊的朋友有点帮助。

先说基础。apt是Debian、Ubuntu这条线的标配,最常用的几个命令不外乎那几个:apt update更新软件源索引,apt upgrade升级已安装的包,apt install装软件,apt remove卸载,apt autoremove清理不再需要的依赖。这套命令其实是对底层dpkg的封装,真正的包文件是.deb格式。而yum和dnf主要用在CentOS、RHEL、Fedora这条线上,包格式是.rpm,dnf是yum的继任者,性能更好、依赖解析更准确,CentOS 8之后官方已经默认dnf了,但很多人习惯还是敲yum,好在现在yum基本上就是dnf的软链接,不影响使用。

说几个稍微进阶一点的操作,这是很多教程懒得讲的地方。apt这边,想知道某个软件包提供了哪些文件,可以用apt-file search加上文件名来反查,比如你只知道某个头文件叫啥但不知道装哪个包,这个命令救命。dnf这边对应的是dnf provides,用法类似,比如想知道哪个包提供了/usr/bin/python3这个二进制文件,直接dnf provides /usr/bin/python3,结果一目了然。

还有一个很实用的场景是版本锁定。生产环境里经常遇到这种需求,某个包升到新版本之后出问题,就想把它钉死在某个版本上。apt这边可以用apt-mark hold加包名来锁定,之后apt upgrade就不会动它了;解锁用apt-mark unhold。dnf这边则需要借助dnf-plugin-versionlock插件,装好之后用dnf versionlock add加包名,效果一样。这个功能在运维场景下非常常用,但新手往往不知道。

关于软件源的管理,两套系统也有区别。apt的源配置在/etc/apt/sources.list以及sources.list.d目录下,手动添加第三方源的时候要注意GPG密钥的导入,否则会有签名验证报错。dnf/yum的源文件放在/etc/yum.repos.d目录下,每个.repo文件就是一个源,结构很清晰,baseurl和gpgcheck是最核心的两个字段。个人经验是,在国内用这两套系统,换成阿里云、清华或者中科大的镜像源是第一步,否则下载速度惨不忍睹,有时候直接超时断连。

还有一点想说的是缓存清理。apt clean会清掉已下载的.deb包缓存,apt autoclean只清掉那些已经无法从源里下载的旧版本包,后者更温和一些。dnf clean all则会把元数据和包缓存一起清掉,有时候源更新之后出现奇怪问题,第一反应就是先跑一个dnf clean all再重新缓存,能解决不少玄学报错。

两套系统各有各的设计哲学,apt更贴近Debian那种"稳定优先"的气质,dnf在依赖处理上引入了SAT求解器,理论上更健壮。但说实话,日常使用差异没那么大,关键还是要理解包管理的底层逻辑:索引、依赖、安装、卸载这几个环节是通用的,换个命令语法不过是换个壳。真正出问题的时候,学会看报错信息比记命令更重要。
回复 转播

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表