[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
加载中...
2票,平均分:1.00/12
71,266
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。