[CentOS 8] yum 爱好者如何切换到 dnf 指南

目录
大家好,
我是Mandai,Wild团队负责开发工作的成员。
不久前,CentOS 8 发布。
Beyond Inc. 通常是一家 MSP(托管服务提供商)公司(尽管他们也有其他业务! Beyond 的服务 | Beyond Inc. 请参阅
这次,我将谈谈如果你使用 CentOS 系统,那么大家常用的 yum 命令将不再可用。
yum 命令已弃用。
对于已经了解情况的朋友来说,这可能是一个“终于”到来的时刻:yum 命令即将被弃用。
您或许会担心软件包的管理问题,但请放心,
新的软件包管理系统已经准备就绪!
它的继任者是 dnf。
你们当中有些人可能不熟悉DNF。
但我可以向你们保证,它并不是一个新开发的工具。
dnf 是一个软件包管理系统,它曾被用于与 Redhat 兼容的发行版 Fedora 中,现在也被引入到 CentOS 中。
为什么要进行更改?
问题在于 yum 使用的是 Python 2,因此不能无限期地使用。
由于 dnf 运行在 Python 3 上,因此 CentOS 8 系统中使用的 Python 版本也已升级到 Python 3。
操作系统安装完成后,只会安装系统自带的 Python 版本 platform-python,因此用户使用的 Python 版本似乎需要单独安装。
我想了解 dnf 命令,所以我尝试使用 dnf 执行一些常见的 yum 命令。
我尝试使用 dnf 命令执行一些常见的软件包管理任务。
查看软件包列表
在查找软件包时,我总是使用 yum list | grep [软件包名称]。
使用 dnf 运行 yum list 会发生什么?
dnf 列表
这只是yum改了个名字而已。
顺便说一下,要查看已安装软件包的列表,
dnf 列表已安装
你可以在这里查看。
安装软件包
如果要安装一个软件包该怎么办?
使用 dnf 运行 yum install 时会发生什么:
dnf install [软件包名称]
在这里,yum 也变成了 dnf。
卸载软件包
你可能开始明白了,但是当你使用 dnf 运行 yum remove 命令时会发生什么呢?
dnf 删除 [软件包名称]
原来基本用法并没有太大变化!
我想使用 epel 仓库
如果使用 epel 存储库呢?
要安装 epel 软件仓库,请运行以下命令:
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm # 或 dnf install epel-release
至于包含存储库设置的 epel.repo 文件,根据目前的流程来看,dnf 的目录似乎位于 /etc 下。
ls -al /etc/dnf 总计 16 drwxr-xr-x. 8 root root 128 11月 17 05:03 . drwxr-xr-x. 80 root root 8192 11月 25 01:18 .. drwxr-xr-x. 2 root root 6 5月 13 2019 aliases.d -rw-r--r--. 1 root root 82 5月 13 2019 dnf.conf drwxr-xr-x. 2 root root 59 11月 25 01:18 modules.d drwxr-xr-x. 2 root root 6 5月 13 2019 modules.defaults.d drwxr-xr-x. 3 root root 89 11月 17 05:04 plugins drwxr-xr-x. 2 root root 59 11月 17 05:04 protected.d drwxr-xr-x. 2 root root 37 11月 17 05:03 vars
嗯?我找不到类似 repos.d 的目录。
这并不奇怪。
令人惊讶的是,仓库文件的目录仍然是 /etc/yum.repos.d。
真是令人困惑!
ls -al /etc/yum.repos.d/ 总共 84 drwxr-xr-x。 2 根根 4096 十一月 17 05:15 。 drwxr-xr-x。 80 root root 8192 11 月 25 日 01:18 .. -rw-r--r--。 1 root root 731 11 月 17 日 05:15 CentOS-AppStream.repo -rw-r--r--。 1 root root 712 11 月 17 日 05:15 CentOS-Base.repo -rw-r--r--。 1 root root 798 11 月 17 日 05:15 CentOS-centosplus.repo -rw-r--r--。 1 root root 1357 11 月 17 日 05:08 CentOS-CR.repo -rw-r--r--。 1 root root 668 8月 14 06:42 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 756 11月 17 05:15 CentOS-Extras.repo -rw-r--r--. 1 root root 356 11月 17 05:08 CentOS-fasttrack.repo -rw-r--r--. 1 root root 976 11月 17 05:08 CentOS-Media.repo -rw-r--r--. 1 root root 736 11月 17 05:15 CentOS-PowerTools.repo -rw-r--r--. 1 root root 1382 8月 14 06:42 CentOS-Sources.repo -rw-r--r--. 1 root root 78 11月 17 05:08 CentOS-Vault.repo -rw-r--r--. 1 root root 1400 11月 17 05:08 epel-playground.repo -rw-r--r--. 1 root root 1249 10月 10 16:15 epel-playground.repo.rpmnew -rw-r--r--. 1 root root 1206 11月 17 05:15 epel.repo -rw-r--r--. 1 root root 1104 10月 10 16:15 epel.repo.rpmnew -rw-r--r--. 1 root root 1354 11月 17 05:08 epel-testing.repo -rw-r--r--. 1 root root 1203 10月10日 16:15 epel-testing.repo.rpmnew
我就是这样找到仓库文件的。
文件内容似乎与之前相同。
顺便说一下,在使用命令指定是否启用或禁用存储库时,--enablerepo / --disablerepo 选项的用法似乎与 yum 相同。
安装 epel 仓库后,可以使用以下命令安装 remi 仓库(我认为 PHPers 会喜欢它)。
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
根据 remi 仓库网站的信息,它的安装方法似乎与 yum 略有不同。
dnf 中添加了模块的概念,只需指定 PHP,即可安装基本软件包 php-cli、php-common、php-fpm、php-json、php-mbstring 和 php-xml。
对于我们这些生活在多字节世界的人来说,这已经是常识了,但 php-mbstring 现在默认安装还是有点令人惊讶的。
引入此模块的一个好处是,它使得在多个软件包版本之间切换变得更加容易。
dnf 模块重置 php:remi-7.3 dnf 模块安装 php:remi-7.2
这意味着版本更新速度很快。你
可能不会经常用到它,但了解一下或许在紧急情况下能派上用场。
此外,CentOS8 的 AppStream 存储库中注册的 PHP 版本已升级到 7.2,因此它似乎不会经常被使用。
但是,PHP 7.2 的安全更新只会持续到 2020 年 11 月底,所以你无法长时间使用它。
概括
这次,我们引入了一个名为 dnf 的软件包管理工具,它最初安装在 CentOS 8 中。
我的感受和 yum 差不多,我希望它能帮助降低读者的心理障碍,哪怕只是一点点。
我还记得当初 CentOS 7 引入 systemd 时我感到多么恐惧,但是 dnf 很容易上手,而且非常好用。
最后,yum 不会立即变得无法使用;yum 命令在 CentOS 8 中仍然可用。
然而,CentOS 8 中的 yum 就像 dnf 的一个包装命令,即使在 /usr/bin/yum 中,它也只是处理键盘输入并调用 dnf 模块。
鉴于目前的情况,yum 命令几乎肯定会在不久的将来消失。
到那时,我想写一篇文章来纪念这个从世界上消失的软件包管理系统。
就这样。
2
