精品軟體與實用教程
先來了解RPM包
RPM是一種套件格式,也是一種低階套件管理器。低階的套件管理器做基本的事情,他們會為你安裝包,但是只有在已經安裝了所有依賴項的情況下,他們才會卸載你指定已安裝的軟體包。他們不會為您管理依賴關係和軟體倉庫。 RPM和其他低階套件管理器(如Debian的dpkg和Slackware的pkgtools)一樣,不需要有軟體倉庫的存在。因此,如果您嘗試使用它安裝軟體包但缺少依賴項,它不會自動解決,需要您下載並手動安裝它。您必須自行搜尋RPM依賴包,然後將下載URL指定為RPM。
DNF出首次出現
如果你是Fedora的粉絲,並且你升級到22版,你可能已經注意到了一個重大變化。 熟悉的(並且長期存在的)Yum包管理器已經不在了。 取而代之的是更強大、更聰明的Dandified Yum(DNF)。
為什麼要推出DNF套件管理器取代yum? 以及如何使用新的軟體包管理系統?
在開始介紹之前,要了解那些從不接觸命令列的人(在Fedora系統上可能是很少見的),他們應該看不到異常之處。 GUI前端保持(幾乎)相同– 它仍然是一樣的桌面。 但是,如果您是從命令列安裝軟體的粉絲,則在發出命令時會注意到新文字的快速閃爍。
yum被淘汰的原因
Yum被升級到DNF有三個主要原因。這些原因由來已久,而且足夠嚴重,Yum不得不被拋棄的原因是:
一個沒有文檔的api——這意味著開發人員需要做更多的工作。為了讓開發人員能夠做他們需要做的事情,經常需要瀏覽Yum程式碼庫才能編寫呼叫。這意味著發展非常緩慢。
Python 3 – fedora即將遷移到Python 3, Yum無法在此變化中存活,而DNF可以使用Python 2或Python 3運作。
破碎的依賴解決演算法—長期以來,這一直是Fedora套件管理器的致命弱點。 DNF使用了一種最先進的基於可滿足性state-of-the-art satisfiability(SAT)的依賴解決方案。這是在SUSE和openSUSE的Zypper中使用的相同類型的依賴解決程序。
簡單地說,Yum已經過時了,經不起現代Fedora發行版的嚴格要求。
dnf的優勢在哪裡?
您必須從兩個不同的角度來看待這個問題:最終用戶和開發人員。如果您是最終用戶,從Yum切換到DNF意味著一件非常簡單的事情:更可靠的體驗。這種可靠性的來源是DNF優越的依賴性解決方案。現在安裝軟體包時,系統無法解決依賴關係的情況非常罕見。這個系統更智慧。無論如何,Yum的依賴演算法被破壞了。 DNF的基於SAT的依賴解決程序解決了這個問題。
最終用戶在安裝套件時也將看到更少的記憶體使用。安裝和升級也會更快。最後一點應該特別重要。使用Yum工具運行升級的速度開始慢得令人無法接受(特別是與apt-get和zypper之類的工具相比)。
如果您是開發人員,轉向DNF意味著您將能夠更有效率、更可靠地工作。所有公開的api都有文檔。開發人員的另一個優點是將實作C語言。開發人員已經創建了hawkeye和librepo(用於從軟體倉庫下載套件和元資料的C和Python庫)。他們還將在未來發布更多基於c的api。考慮到C仍然是一種廣泛使用的語言(目前在TIOBE索引中排名第二),這對開發人員來說應該是一個可喜的改變。
dnf指令是如何使用的?
這就是最終用戶的好消息所在。從Yum遷移到DNF只會挑戰你的記憶。當您開啟終端機視窗執行命令列安裝時,傾向於發出命令yum install php。但現在情況已經不同了。同樣的dandified指令將是dnf install php。
從yum切換到dnf
過程中會有一些磕磕絆絆。是的,DNF是Yum的替代品;如果您不是Yum的高級用戶,那麼在遷移過程中可能不會遇到任何問題。然而,還有一些問題有待發現。讓我們檢查舊的yum update --skip-broken指令。使用此命令時,將執行更新,但跳過所有依賴關係中斷的套件。另一方面,DNF預設會跳過這些破損的包。為了達到這個目的,沒有必要包括「跳轉中斷」標誌。如果您需要DNF報告損壞的套件,您必須執行DNF update,然後執行DNF check-update。有些用戶不喜歡這種行為,因為它為曾經簡單的流程添加了額外的步驟。對於進階用戶來說,DNF最終可能需要比Yum更多的工作。另一方面,對於標準使用者來說,DNF只不過是將yum指令換成DNF指令。
在一段時間內,從Yum遷移到DNF可能會有些尷尬,特別是當不知情的用戶打開命令列並嘗試使用yum時。但即便如此,你還是得到了一個警告:
Yum command has been deprecated, use dnf instead.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run 'dnf migrate'
翻譯成中文意思大概是yum指令已經被廢棄了,請使用dnf
很明顯,有些事情已經改變了。然而,我確實認為,開發人員本可以在他們的警告中更加明確,而不只是老一套地說「man dnf」。相反,更接近於:
Yum指令不再使用。請在您的指令中將“yum”替換為“dnf”,以使用新的系統。
看到這樣的提示,所有的終端使用者都需要知道,將“yum”替換為“dnf”,這樣就可以了。
yum和DNF本質上是管理依賴關係和軟體倉庫的程序,然後利用RPM來實際安裝,下載和刪除軟體包。 DNF是yum的繼承者,它與yum的主要區別在於它使用了openSUSE的ZYpp套件管理器中的一些庫,試圖提高速度並改善其他方面(儘管我執行的安裝速度測試似乎表明DNF實際上比yum並沒有多少的優勢)。