模块化使Fedora能够在存储库中提供RPM包的替代版本。每个Fedroa版本都可以原生构建不同应用程序、语言运行时和工具版本的多个版本。FedoraMagazine大约一年前写过关于Fedora28服务器版模块化的文章。当时,它只是一个带有附加组件的可选存储库,并且明确只支持服务器版本。到目前为止它已经发生了很大的变化,模块化现在是Fedora发行版的核心部分。一些包已经完全变成了模块。在撰写本文时,Fedora30的49,464个二进制RPM包中有1,119个(2.26%)来自模块(更多信息请点击此处)。模块化基础知识由于拥有许多不同版本的包可能会让人不知所措(并且难以管理),因此包被分组为模块,模块可以表示应用程序、语言运行时或任何其他合理的分组。模块通常有多个流,通常代表软件的主要版本。它可以并行使用,但在给定系统上只能安装每个模块的一个流。为了不让太多的选择淹没用户,每个Fedora版本都有一组默认值,因此只需要在需要时做出决定。***,为了简化安装,可以根据用例使用预定义的配置文件有选择地安装模块。例如,数据库模块可以安装为客户端、服务器或两者。模块的实际使用当您在Fedora系统上安装RPM包时,它很可能来自于模块流。您可能没有注意到的原因之一是模块化的核心原则之一是在您探索它之前保持不可见。让我们比较以下两个案例。首先,安装流行的i3平铺窗口管理器,然后是极简主义的dwm窗口管理器:$sudodnfinstalli3...完成!正如预期的那样,上述命令在系统上安装了i3包及其依赖项。这里没有其他事情发生。但是另一个呢?$sudodnfinstalldwm...启用模块流:dwm6.1...完成!感觉是一样的,但在后台发生了一些事情。它启用默认的dwm模块流(6.1)并从模块安装dwm包。为了透明起见,输出中有一条关于模块被自动启用的消息。但除此之外,用户不需要了解任何关于模块化的知识就可以像往常一样使用他们的系统。但如果他们使用模块化方法呢?让我们看看如何安装不同版本的dwm。使用以下命令查看可用的模块流:$sudodnfmodulelist...dwmlatest...dwm6.0...dwm6.1[d]...dwm6.2...提示:[d]efault,[e]enabled,[x]disabled,[i]installed输出显示dwm模块有四个流,6.1是默认值。要安装不同版本的dwm包,例如,安装6.2流。启用它,然后使用以下两个命令安装软件包:$sudodnfmoduleenabledwm:6.2...Enablingmodulestreams:dwm6.2...Done!$sudodnfinstalldwm...Done!***让我们开始吧看配置,以PostgreSQL为例。$sudodnfmodulelist...postgresql9.6client,server...postgresql10client,server...postgresql11client,server......要安装PostgreSQL11服务器,请使用以下命令:$sudodnfmoduleinstallpostgresql:11/server请注意,除了启用流,我们还可以通过一条命令指定配置来安装模块。可以一次安装多个版本。要添加客户端工具,请使用以下命令:$sudodnfmoduleinstallpostgresql:11/client还有许多其他具有多个流的模块可供选择。在撰写本文时,Fedora30中有83个模块流。包括两个版本的MariaDB、三个版本的Node.js、两个版本的Ruby等等。有关完整的命令集(包括从一个流切换到另一个流),请参阅Modular的官方用户文档。
