操作系统软件包模块化仓库允许在一次版本发布中可以提供一个软件的多个版本,可满足不同用户对于软件包不同版本的开发需求。
什么是模块化
一般来说,某个操作系统发行版在新版本发布时会尽可能提供最新稳定的软件包。这会导致两个方面的问题:
■ 发行版提供的软件包太新,导致和其他开发框架的兼容性较差
■ 发行版没有提供某个软件包的最新版本,导致无法使用最新特性
模块化可以在一定程度上解决上述问题,模块化是软件包的一种管理方式,是作为传统rpm打包的另一种方案,它允许某个软件包的多个版本在同一发行版中同时存在,每一个版本称为一个stream(简称流),通过流我们可以区分软件包的多个软件版本。模块化软件包的组织方式如下图所示:
以php软件包为例,在传统的rpm包组织方式中,php和php-common是分开打包的。但在模块化组织方式中,我们将php和php-common的某一个的版本打包在一起,统称为模块化软件包,它代表由一个或多个rpm软件包和元数据文件的集合,我们将这一php版本称为默认的一个stream(模块化软件包具有默认流,即安装该软件时默认安装的版本,如此处php-1即为默认流)。同时系统中还存在php的第二个版本,我们可以通过命令从不同的stream之间切换。
模块化的优势
软件包模块化有如下优势:
-
更灵活:软件包模块化使得在同一发行版中存在某个软件包的多个版本,用户可以根据需求灵活使用;
-
更方便:用户可以很方便的使用最新版本的应用程序,可以根据需要随时升级或降级;
-
更简单:软件包模块化可以把一系列强相关的rpm包通过模块化的形式打包起来,安装时可以一次性安装,减少复杂性。
-
更安全:模块化软件包中的rpm包在开发阶段都是同时编译、测试以及发布的,避免了关联较强的软件包因为编译环境的不同导致的不兼容以及不稳定的场景。
-
兼容性更强:模块化软件包的管理需要使用特殊的命令,但模块化软件包中单个包的安装也可以兼容旧的命令,若用户不想使用module的方式,也可以当做普通软件包进行安装,如httpd软件包,可以使用dnf module install httpd命令安装模块化软件包,也可以使用yum install httpd命令,安装单个软件包,并不会改变用户的使用习惯。
如何使用模块化
dnf额外提供了一些专门用于模块化的命令。
列出系统下的所有模块化软件包:
#dnf module list
启用模块化软件包:
#dnf module enable NAME:STREAM
安装模块化软件包:
#dnf module install NAME:STREAM
如php,KeyarchOS提供了4个版本,其中7.2为默认的版本。
若要切换至php7.4版本,我们应依次执行如下命令:
# dnf module reset php
# dnf module enable php:7.4
# dnf module install php
总结
浪潮信息云峦操作系统KeyarchOS在版本发布中引入了模块化特性,为用户所使用的软件包提供了更多的选择,开发人员可以使用新的命令方便安装不同版本的软件包。同时模块化仓库可以兼容旧的软件包安装命令,并不会改变用户的使用习惯。