DNF是基于RPM的下一代软件包管理器,于Fedora 18中首次引入,并在Fedora 22版本中取代了yum命令。本文将介绍如何使用DNF进行软件包管理。

1 常用的dnf命令

1.下载软件包

使用dnf下载软件包,输入以下命令:

dnf download package_name

如果需要同时下载未安装的依赖,加上--resolve,命令如下:

dnf download --resolve package_name

2.安装软件包

dnf install <package>

3.列出已安装软件包

使用以下命令查询通过dnf命令安装的软件包:

dnf list installed

4.列出所有可用的dnf软件仓库

使用以下命令打印可用的dnf软件仓库:

dnf repolist

5.列出所有启用和不启用的软件仓库

使用以下命令列出启用和不启用的软件仓库:

dnf repolist all

6.查找文件由哪个软件包提供

使用以下命令查看哪个软件包提供了指定的文件,比如:

dnf provides /bin/bash

7.查看软件包详细信息

使用以下命令查看某个软件包的详细信息,比如:

dnf info package_name

8.删除/卸载软件

删除或卸载软件,比如软件名是nano,命令如下:

dnf remove nano

9.获取指定的dnf命令帮助

如果需要获取dnf某个指定动作的使用帮助,比如clean,可以执行以下命令获取相关信息:

dnf help clean

10.检查 DNF 版本:

dnf --version

以上是DNF命令的一些基本使用方法,RHEL和CentOS 8默认采用dnf工具管理软件包,而旧的发行版默认采用yum管理软件。DNF的目标是改善YUM的缺陷,在性能、内存使用、解析依赖关系、速度和许多其他方面都有提升。

2 换源,设置dnf / yum镜像

CentOS 8 默认是会读取 centos.org 的 mirrorlist 的,所以一般来说是不需要配置镜像的。如果你的网络访问 mirrorlist 有问题,才需要另外配置。相关镜像配置,请参考各镜像站的相关帮助。

以下是一些常用的镜像源:

阿里云镜像

以下是在阿里云上更改 CentOS 8 镜像源的方法:

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

需要注意的是,这里下载的 CentOS-Base.repo 文件中附带了 AppStream 等其他源地址,而 CentOS 8 原版是分拆为多个文件分别管理的。阿里云还新增了 PowerToolscentosplus 等仓储地址,并将本地 GPG key 路径改为了网络地址 https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

你也可以自行修改,以保持原有的 repo 文件结构:

# `sed` 的 `-i.bak` 参数会自动备份所替换的文件,可放心使用。
# 出现问题可通过 `rename -- .bak '' *.bak` 进行批量还原
sudo sed -i.bak \
-e 's|^mirrorlist=|#mirrorlist=|' \
-e 's|^#baseurl=|baseurl=|' \
-e 's|http://mirror.centos.org|https://mirrors.aliyun.com|' \
/etc/yum.repos.d/CentOS-*.repo