RHEL 8 YUM倉庫的應(yīng)用序列AppStream
在最近推出的Red Hat Enterprise Linux 8中,原來的YUM已經(jīng)不復(fù)存在,僅有YUM之名被保留,已經(jīng)被DNF(Dandified YUM)取代。由于2013年7月8日,YUM項(xiàng)目領(lǐng)導(dǎo)人Seth Vidal騎行被撞身亡之后,紅帽及開源社區(qū)發(fā)表聲明稱,將會(huì)永遠(yuǎn)不會(huì)忘記Seth對開源社區(qū)的貢獻(xiàn),此次仍以YUM為名,大概就是對這個(gè)承諾的堅(jiān)守。
DNF于2015年在Fedora項(xiàng)目孵化成形,將原先混亂不堪的YUM提升到一個(gè)新的高度。相較于原來的YUM而言,DNF(或者新YUM)主要解決了以下兩個(gè)問題:
1、速度
相較以往的YUM而言,速度大大提高。
2、依賴的算法
以在往的YUM安裝過程中,經(jīng)常會(huì)出現(xiàn)找不到依賴包的問題,進(jìn)而需要用戶使用--skip-broken,即跳過找不到的安裝包。在DNF中,在Libsolv的支撐下,這個(gè)問題將一去不復(fù)返。
RHEL8中,YUM倉庫的變化很大。一個(gè)配置文件中,YUM倉庫被分成兩部分:
1)BaseOS,這部分主要收集的是操作系統(tǒng)核心的功能
2)AppStream,這部分則主要收集用戶空間的安裝包

然而,在用戶層面,較大的區(qū)別在于安裝包的管理規(guī)則上。當(dāng)前的管理更加精細(xì),可能意味著更加難懂,更加復(fù)雜。此前,要安裝MariaDB數(shù)據(jù)庫,我們這樣安裝:
[root@localhost ~]# yum install -y mariadb mariadb-server
因?yàn)镸ariaDB有幾個(gè)安裝包,所以要單獨(dú)寫出來。現(xiàn)在,設(shè)定要組合,就不需要那么折騰了。
[root@localhost ~]# yum module install mariadb:10.4/server
同一個(gè)YUM倉庫中,可以有幾個(gè)版本存在,還可以設(shè)置幾個(gè)安裝組合,如上面這個(gè)命令行中的/server,就是要安裝一個(gè)名叫server的軟件組合。這個(gè)組合是自己設(shè)定的。名稱當(dāng)然也可以自己隨意設(shè)置,不叫server也行。
在上面的示意圖中,與yum的安裝包并列的,還有一種叫模塊的東西。多了這個(gè)層次或多了這個(gè)管理方法,相應(yīng)地在yum命令下,增加了一個(gè)module子命令。
# yum module -h
# yum module list

多了個(gè)模塊(module)、模塊下多了個(gè)序列(Stream)、序列下多了個(gè)組合(profile)。比如MariaDB中,創(chuàng)建了一個(gè)模塊,包含了一個(gè)10.3版本的序列,其下有client、server和glera三種安裝組合。其中,server組合后,有一個(gè)“[d]”,如圖片最下方所示,那是缺省的安裝組合。如果你安裝的時(shí)候沒有指定組合,則會(huì)安裝這個(gè)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/?