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

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

多了個模塊(module)、模塊下多了個序列(Stream)、序列下多了個組合(profile)。比如MariaDB中,創(chuàng)建了一個模塊,包含了一個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/?