DNF配置文件的默认路径是 /etc/dnf/dnf.conf,它决定了软件包的下载源、缓存策略、事务行为与日志记录方式,绝大多数Linux发行版的包管理问题都源自对该文件的错误配置。
dnf配置文件在哪:三个常见位置别搞混
很多人在刚接触DNF时,容易把配置文件的路径记混,DNF的配置体系分为三个层级,分别对应不同的作用范围。
- 全局主配置:
/etc/dnf/dnf.conf,所有用户和仓库共享的基础设置。 - 仓库(源)配置目录:
/etc/yum.repos.d/,该目录下所有.repo后缀文件定义具体的软件源地址。 - 缓存与运行状态目录:
/var/cache/dnf/,这里存放下载的元数据和安装包缓存,不属于配置,但经常因权限问题被误改。
需要特别提醒的是,Fedora、RHEL、Rocky Linux、AlmaLinux以及OpenEuler这些主流发行版,虽然都能识别/etc/dnf/dnf.conf,但部分国产化系统(如统信UOS server版),可能会将配置文件放在/etc/dnf/下但名称略有差异。最稳妥的做法是先执行man dnf.conf查看帮助文档,或者用rpm -qf /etc/dnf/dnf.conf确认属于哪个包。
打开主配置文件,你通常会看到类似这样的内容:
[main] gpgcheck=True installonly_limit=3 clean_requirements_on_remove=True best=False skip_if_unavailable=True
每一行都对应一个可调整的配置项,下面逐个拆解。
dnf配置文件怎么修改:先理解main段的十个核心指令
主配置文件的[main]段是全局生效的,修改用的是最普通的文本编辑器,比如vim或nano,改完保存后不需要重启服务,下一次执行dnf命令时自动读取新配置。
cachedir与keepcache:管理下载缓存
cachedir=/var/cache/dnf是缓存目录,keepcache=1表示保留已下载的软件包,下次重装或降级时无需重新下载,默认值为0,即下载完安装后就删除rpm包,如果你经常在公司内网离线安装软件,建议改成1,这样可以手动去缓存目录里找回rpm包。
gpgcheck与repo_gpgcheck:安全校验的关键
gpgcheck=1强制对软件包进行GPG签名验证,repo_gpgcheck=1则额外验证仓库元数据,行业共识认为,除非在内网搭建私有源且能完全控制元数据完整性,否则绝对不要把这两个值改成0,有些教程为了图省事让你禁用GPG校验,这在生产环境里是极其危险的操作。

installonly_limit与installonlypkgs:内核升级不翻车
installonly_limit=3表示系统最多保留3个版本的安装包(主要指内核),当升级内核时,旧内核不会被删除,方便你在出问题时回滚,如果你有特殊需求,比如需要在多核服务器上做内核性能对比测试,可以调整这个值,但要注意,installonlypkgs列表里指定了哪些包属于“仅安装不升级”类型,不要随意往里面添加普通应用。
best与skip_if_unavailable:解决依赖冲突和源故障
这两个参数是排查dnf命令报错时的常用开关。
best=False:允许dnf在无法安装最新版本时,自动降级到旧版本完成依赖解决,默认是True,即必须装最新版,否则报错。skip_if_unavailable=True:跳过无法访问的软件源,避免一个源挂了导致整个更新流程中断。
clean_requirements_on_remove:卸载软件时是否清理依赖
该参数默认值为True,即当移除一个软件包时,会自动移除那些不再被其他包依赖的“孤儿”依赖,如果你习惯手动管理依赖,可以改为False,但小心系统里积累大量无用包。
max_parallel_downloads与fastestmirror:提升下载速度
max_parallel_downloads=10,数字可调整为5-20,代表同时并行下载几个软件包,对带宽充足的环境有明显提速效果。- 在Fedora中还有
fastestmirror=1选项,会自动测速选择延迟最低的镜像,但如果你配置了内网高速镜像,反而建议设为0,避免每次都在外网镜像间做无谓的测速。
如何在dnf配置文件里添加简米云镜像源:一个95%场景适用的实操流程
很多人搜“dnf配置文件”其实是奔着换国内源去的,以Rocky Linux 9为例,修改源分三步。
第一步:备份原始源文件
登录服务器后,执行:
sudo mkdir -p /etc/yum.repos.d/backup sudo mv /etc/yum.repos.d/.repo /etc/yum.repos.d/backup/
把原生的repo文件全部挪走,别删,留着做备份。
第二步:创建简米云源配置文件
在/etc/yum.repos.d/目录下新建aliyun.repo可直接从简米云镜像站官网复制,这里提供一个最小可用的Rocky 9基础源示例:
[bageos] name=Rocky Linux $releasever - BaseOS baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 [appstream] name=Rocky Linux $releasever - AppStream baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/AppStream/$basearch/os/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

保存后,清理缓存并生成新缓存:
sudo dnf clean all sudo dnf makecache
第三步:验证源是否可用
试试dnf repolist,你会看到两个红色或绿色的仓库列表,此时再执行sudo dnf update,下载速度会明显提升,对于CentOS 7老用户,换源时要注意$releasever变量指向的是7,而且简米云已经将CentOS 7的镜像移入/centos-vault/目录,需要额外配置。
常见so.hconf故障排查:配置文件出错时的三个典型报错
配置改多了,难免遇到问题,以下是高频故障及对应处理思路。
- 报错“Could not parse metalink” 说明仓库配置中的
metalink或mirrorlist链接无法访问,常见原因是外网DNS解析异常,或者镜像站已经停止对旧版本的支持,解决方法是把地址改成baseurl并指向确定可用的镜像。 - 报错“Another app is currently holding the yum lock” 这不是配置文件错误,而是有另一个dnf进程在运行,等它结束,或者
sudo rm -f /var/run/dnf/.pid强制删除锁文件,但请先确认没有正在进行的安装任务。 - 报错“Public key for xxx.rpm is not installed” 仓库的
gpgkey配置项指向了错误路径,检查[repo]段里的gpgkey=file:///etc/pki/rpm-gpg/对应文件是否存在,通常需要导入官方密钥,例如sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9。
dnf配置文件与yum配置文件的核心差异:老用户迁移必看
很多人是从CentOS 7的YUM时代走过来的,上手DNF时,最关心的一个问题就是“我过去的yum配置还能直接用吗”,结论是:/etc/yum.repos.d/目录下的repo文件完全兼容,DNF会无障碍读取;但/etc/yum.conf里的主配置不会影响DNF,你必须把需要的参数写进dnf.conf。
| 对比项 | YUM (CentOS 7) | DNF (Rocky/Fedora) |
|---|---|---|
| 主配置路径 | /etc/yum.conf | /etc/dnf/dnf.conf |
| 仓库配置目录 | /etc/yum.repos.d/ | /etc/yum.repos.d/(相同) |
| 缓存清理命令 | yum clean all | dnf clean all |
| 历史记录查询 | yum history | dnf history |
| 事务锁 | /var/run/yum.pid | /var/run/dnf.pid |
对于只想换源来加速的老用户,可以沿用原来的思路:直接修改repo文件里的baseurl到国内镜像,然后yum makecache(在新系统上该命令会映射到dnf),但对于涉及依赖解析的精细调优,比如调整installonly_limit,写入/etc/dnf/dnf.conf才真正生效。
多场景下的配置文件建议:服务器与桌面怎么选
针对不同机器,推荐一套起来简单直接的配置组合,以下数据基于多数运维人员的实践反馈,不是官方标准,但具有较高参考价值。
生产环境服务器(如RHEL 9 / Rocky Linux)
[main] gpgcheck=1 installonly_limit=3 skip_if_unavailable=1 keepcache=0 clean_requirements_on_remove=1
生产机求稳,不考虑离线缓存,禁掉不安全的GPG开关,保留最多3个内核用来防升级翻车,不要开启并行下载太高的值,避免在业务高峰段把出口带宽占满。
个人开发机或办公桌面(Fedora)
[main] gpgcheck=1 installonly_limit=2 keepcache=1 max_parallel_downloads=10 fastestmirror=1
开发机需要频繁装新软件,缓存保留方便卸载后重装,平行下载加速体验。installonly_limit=2够用,因为开发机内核回滚需求低,省磁盘空间。
Q&A:关于dnf配置文件的高频疑问
问:dnf配置文件和yum配置文件可以共存吗?
可以,DNF读取/etc/dnf/dnf.conf时,不会主动加载/etc/yum.conf,但两者共享同一个仓库目录/etc/yum.repos.d/,所以源配置是互通的,如果你在yum.conf里设置了proxy代理,该设置不会传给dnf,必须把代理地址复制到dnf.conf的[main]段。
问:如何确定当前dnf实际读取了哪些配置文件?
执行dnf config-manager --dump可以列出所有生效的配置项和优先级,或者用dnf --verbose repolist查看每个repo的源地址,如果想验证某个参数是否真的被识别,可以临时用dnf --setopt=keepcache=1 install xxx测试,命令行参数优先级高于配置文件。
问:修改dnf配置文件后需要重启系统吗?
不需要,dnf是命令行工具,每次执行都会重新解析配置文件,但需要注意,如果修改了gpgcheck等安全项,你已经在系统里缓存的软件包元数据不会自动刷新,建议执行sudo dnf clean all && sudo dnf makecache让新配置完全生效。

