CentOS 8的 dnf 新增了的一个moduler 功能,中文译意的意思是模块流(大致如下),该功能主要用于切换不同版本的软件,其主要用于快速替换升级当前使用软件版本。
如果用过Windows 下的phpMyStudy 应该会知道,里面有一个一键切换PHP版本的功能,CentOS 8 中的dnf module 也是用于实现类似功能的,例如切换php、nginx、nodejx等软件版本的,后续CentOS8还会推出更多module的(这些module大部分集中在 AppStream软件库中)。
同时已经有部分第三方软件库支持该功能了,例如,remi 这个第三方源(repo下载:CentOS8 yum/dnf 配置)
其实在平时使用的时候其实就已经使用了moduler功能了,只是有的时候会被忽略而已。
dnf Moduler 使用
基础使用方法
dnf [OPTIONS] module [COMMAND] [MODULE-SPEC]
OPTIONS:
详情查询 dnf(8) 的 man 帮助文档
COMMAND:
enable 启用模块
info 查询模块信息
remove 卸载模块
provides 查询模块的提供软件库信息
list 查询模块的详细信息
update 更新模块
install 安装模块
reset 重置模块
disable 禁用模块
MODULE-SPEC:
Name[:Stream[/Profiles]] 模块名称[:流[/配置]]
查询有哪些模块流
查询指定软件的模块流,输入命令dnf module list php
就可以看到指定软件提供的所有模块流了。CentOS AppStream - 8
表示一个软件库(repo)中包含的模块流,每一行代表一个模块流。
一共有4列,分别是 Name(名称),Stream(模块流),Profiles(配置),Summary(简介)。
其中Profiles列中的[d]
标志着,在未指定配置时,将默认将使用此配置。
而Stream列中[d]
标志着,在未指定模块流时,将默认使用该软件流。
查询所有软件流
如果想要查询所有软件流,可以不输入软件名称,直接输入命令dnf module list
,如下:
安装指定的模块流
如果想要安装指定模块流的软件可以直接使用命令dnf module install php:7.2
,如下图:
当然没如果只是想要启用指定模块流而不想要安装软件,可以使用此命令dnf module enable php:7.3/common
。
注意,由上面的查询我们可以看见,php7.3没有指定任何默认选项,所以这里的 MODULE-SPEC 需要写全。
更换指定的模块流
dnf同时支持升级和降级两种更换模块流的方法,下面将演示这两种的使用方法:
升级模块流
- 首先需要重置模块流,注意不用卸载先前安装的软件!!
- 直接安装更高版本的PHP即可(这里使用的时remi软件库),如果有冲突,那么dnf会自动将其升级未对应版本的模块流。
这样就完成了模块流的升级
降级模块流
- 与升级相同,先完成模块流的重置操作
- 安装低版本的模块流,同样的,dnf检测到软件冲突,自动完成软件的降级任务。
更换模块流后的使用
在更换模块流之后,就可以安装平时使用的方法使用dnf安装软件了,可以不用管模块流之间冲突等问题了,这些都将由dnf自动完成处理。
例如在启用php:remi-7.4/common
模块流之后(注意未安装),可以直接安装php了,将会自动使用指定模块流的版本安装软件,如下图。
本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【3DQT2TCB】获取授权信息。