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