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有幾個安裝包,所以要單獨寫出來?,F在,設定要組合,就不需要那么折騰了。
[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/?