CentOS 8的 dnf 新增了的一个moduler 功能,中文译意的意思是模块流(大致如下),该功能主要用于切换不同版本的软件,其主要用于快速替换升级当前使用软件版本。
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 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
CentOS AppStream - 8表示一个软件库(repo)中包含的模块流,每一行代表一个模块流。
一共有4列,分别是 Name(名称),Stream(模块流),Profiles(配置),Summary(简介)。
其中Profiles列中的[d]标志着,在未指定配置时,将默认将使用此配置。
而Stream列中[d]标志着,在未指定模块流时,将默认使用该软件流。

查询所有软件流
如果想要查询所有软件流,可以不输入软件名称,直接输入命令dnf module list,如下:
dnf module list

安装指定的模块流

如果想要安装指定模块流的软件可以直接使用命令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同时支持升级和降级两种更换模块流的方法,下面将演示这两种的使用方法:
升级模块流

  1. 首先需要重置模块流,注意不用卸载先前安装的软件!!

dnf module reset php

  1. 直接安装更高版本的PHP即可(这里使用的时remi软件库),如果有冲突,那么dnf会自动将其升级未对应版本的模块流。
    这样就完成了模块流的升级

dnf module install php:remi-7.4/common

降级模块流

  1. 与升级相同,先完成模块流的重置操作

dnf module reset php

  1. 安装低版本的模块流,同样的,dnf检测到软件冲突,自动完成软件的降级任务。

dnf module install php:7.2/common

更换模块流后的使用

在更换模块流之后,就可以安装平时使用的方法使用dnf安装软件了,可以不用管模块流之间冲突等问题了,这些都将由dnf自动完成处理。
例如在启用php:remi-7.4/common模块流之后(注意未安装),可以直接安装php了,将会自动使用指定模块流的版本安装软件,如下图。
dnf module enable php:remi-7.4/common

本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【3DQT2TCB】获取授权信息。

最后修改:2020 年 02 月 04 日 08 : 47 PM
如果觉得我的文章对你有用,请随意赞赏
或者点击网页中小广告,你的鼓励都将成为我写作的动力