RHEL 8 YUM仓库的应用序列AppStream
在最近推出的Red Hat Enterprise Linux 8中,原来的YUM已经不复存在,仅有YUM之名被保留,已经被DNF(Dandified YUM)取代。由于2013年7月8日,YUM项目领导人Seth Vidal骑行被撞身亡之后,红帽及开源社区发表声明称,将会永远不会忘记Seth对开源社区的贡献,此次仍以YUM为名,大概就是对这个承诺的坚守。
DNF于2015年在Fedora项目孵化成形,将原先混乱不堪的YUM提升到一个新的高度。相较于原来的YUM而言,DNF(或者新YUM)主要解决了以下两个问题:
1、速度
相较以往的YUM而言,速度大大提高。
2、依赖的算法
以在往的YUM安装过程中,经常会出现找不到依赖包的问题,进而需要用户使用--skip-broken,即跳过找不到的安装包。在DNF中,在Libsolv的支撑下,这个问题将一去不复返。
RHEL8中,YUM仓库的变化很大。一个配置文件中,YUM仓库被分成两部分:
1)BaseOS,这部分主要收集的是操作系统核心的功能
2)AppStream,这部分则主要收集用户空间的安装包
然而,在用户层面,较大的区别在于安装包的管理规则上。当前的管理更加精细,可能意味着更加难懂,更加复杂。此前,要安装MariaDB数据库,我们这样安装:
[root@localhost ~]# yum install -y mariadb mariadb-server
因为MariaDB有几个安装包,所以要单独写出来。现在,设定要组合,就不需要那么折腾了。
[root@localhost ~]# yum module install mariadb:10.4/server
同一个YUM仓库中,可以有几个版本存在,还可以设置几个安装组合,如上面这个命令行中的/server,就是要安装一个名叫server的软件组合。这个组合是自己设定的。名称当然也可以自己随意设置,不叫server也行。
在上面的示意图中,与yum的安装包并列的,还有一种叫模块的东西。多了这个层次或多了这个管理方法,相应地在yum命令下,增加了一个module子命令。
# yum module -h
# yum module list
多了个模块(module)、模块下多了个序列(Stream)、序列下多了个组合(profile)。比如MariaDB中,创建了一个模块,包含了一个10.3版本的序列,其下有client、server和glera三种安装组合。其中,server组合后,有一个“[d]”,如图片最下方所示,那是缺省的安装组合。如果你安装的时候没有指定组合,则会安装这个server组合。下面两条命令的最终效果是一样的:
# yum module install mariadb:10.3/server
# yum module install mariadb:10.3
YUM = YellowDog Update Modifier
DNF = Dandified YUM
参考:
2013年Seth Vidal去世的消息 https://www.redhat.com/en/blog/thank-you-seth-vidal
https://developers.redhat.com/blog/2016/08/30/why-red-hats-new-dnf-package-manager-is-not-just-another-yum-2/