dnf config-manager使用

dnf config-managerDNF(Dandified YUM) 的一个插件工具,用来管理软件仓库(repo)配置,相当于给 /etc/yum.repos.d/*.repo 提供一套命令行开关与编辑接口,避免手工改文件。

常见于 RHEL / Rocky / AlmaLinux / Fedora 等系统。


一、确认是否安装

有些系统默认没有插件:

1
dnf install dnf-plugins-core

安装后即可使用:

1
dnf config-manager

二、常见用法

1)查看已启用仓库

1
2
# enabled = 1
dnf repolist

或查看全部:

1
dnf repolist all

2)启用仓库

例如启用 epel

1
dnf config-manager --set-enabled epel

等价于修改:

1
enabled=1

3)禁用仓库

1
dnf config-manager --set-disabled epel

等价于:

1
enabled=0

4)添加新仓库

最常用的添加仓库

直接从 URL 添加:

1
dnf config-manager --add-repo https://example.com/repo.repo

会自动下载 repo 文件到:

/etc/yum.repos.d/

5)修改仓库参数

例如修改 baseurl:

1
dnf config-manager --setopt=epel.baseurl=http://mirror.example.com

修改后写入 repo 文件。


6)为所有仓库设置参数

例如关闭 gpgcheck:

1
dnf config-manager --setopt=*.gpgcheck=0

三、运维场景示例

场景1:临时切换镜像源

1
dnf config-manager --setopt=baseos.baseurl=http://mirrors.aliyun.com/...

场景2:禁用慢源

1
dnf config-manager --set-disabled appstream

场景3:只启用一个仓库

1
2
dnf config-manager --set-disabled '*'
dnf config-manager --set-enabled epel

四、底层发生了什么?

执行:

1
dnf config-manager --set-enabled epel

本质修改:

1
/etc/yum.repos.d/epel.repo

从:

1
enabled=0

变为:

1
enabled=1

只是自动化编辑。


五、生产环境常见坑

坑1:repo 名称不等于文件名

例如:

epel.repo

里面可能有:

1
2
[epel]  # 定义的仓库名字
[epel-debuginfo]

启用时要用 section 名:

1
dnf config-manager --set-enabled epel

不是文件名。


坑2:缓存未刷新

改完 repo 后建议:

1
dnf clean all && dnf makecache

六、进阶用法

查询 repo 文件位置

1
dnf config-manager --dump epel

查看所有配置

1
dnf config-manager --dump