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

大家好,
我是开发团队野生队的成员 Mandai。

不久前,CentOS 8 发布。

Beyond Co., Ltd. 通常被认为是一家 MSP 公司(尽管他们除了 MSP 之外还做其他事情!Beyond 的服务指南 | Beyond Co., Ltd. !),因此,当 Linux 发行版有新版本发布时,他们必须尽快拿到手。

这次,我将谈谈如果你使用 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,095
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但我也很荣幸能够从事其他各种工作,包括市场营销。
我在Beyond中的肖像权采用CC0协议。