Linux系統-----包管理器的演變

安全劍客發表於2019-08-29

每個電腦裝置都使用某種形式的軟體來執行其預定任務。在軟體開發的早期,對產品進行了嚴格的bug 和其他缺陷測試。在過去的十多年裡,軟體通過網際網路釋出,目的是通過應用新版本的軟體來修復任何錯誤。在某些情況下,每個應用程式都有自己的更新程式。在其他情況下,則由使用者自己決定如何獲得和升級軟體。

Linux 早期採用了維護集中位置的做法,使用者可以在這裡查詢和安裝軟體。在這篇文章中,我將討論linux 上軟體安裝的歷史,以及現代作業系統是如何與無休止的洪流保持同步的。

在軟體包管理器之前, Linux 上的軟體是如何安裝的?

從歷史上看,軟體要麼是通過FTP 提供的,要麼是通過郵件列表提供的( 最終這個發行版將包括基本網站) 。只有幾個小檔案包含了建立二進位制檔案的指令( 通常在tarfile ) 。您將解壓縮檔案,讀取自述檔案,只要您有gcc 或其他形式的C 編譯器,您通常會執行一個./configure 帶有一些屬性列表的指令碼,例如將檔案貼上到庫檔案、建立新二進位制檔案的位置等。此外,configure 程式將檢查您的系統是否存在應用程式依賴關係。如果缺少任何主要需求,配置指令碼將退出,在滿足所有依賴關係之前無法繼續安裝。如果成功完成配置指令碼,則Makefile 都會被創造出來。

什麼是包裹?

軟體包是為了對抗這種複雜性而發明的。為了便於移植和儲存,包將多個資料檔案一起收集到一個存檔檔案中,或者簡單地壓縮檔案以減少儲存空間。包中包含的二進位制檔案是根據開發人員選擇的正常預設值預編譯的。包還包含後設資料,如軟體名稱、用途說明、版本號和軟體正常執行所需的依賴項列表。

雖然包本身並不直接管理依賴項,但它們在Linux 軟體管理方面向前邁進了一大步。

什麼是軟體儲存庫?

幾年前,在智慧手機氾濫之前,對於許多使用者來說,如果他們沒有參與Linux 生態系統的話,建立一個軟體儲存庫的想法是很難理解的。到目前為止,大多數Windows 使用者似乎仍然需要開啟網頁瀏覽器來搜尋和安裝新的軟體。然而,那些擁有智慧手機的人已經習慣了軟體“商店”的想法。智慧手機使用者獲取軟體的方式和軟體包管理器的工作方式並無不同。雖然已經有幾次嘗試為軟體庫建立一個有吸引力的UI ,但絕大多數Linux 使用者仍然使用命令列來安裝軟體包。軟體儲存庫是系統配置要使用的任何儲存庫的所有可用軟體的集中列表。

下面是一些最著名的包管理器的簡要概述:

基於 rpm 的包管理器

更新基於RPM 的系統,特別是那些基於RedHat 技術的系統,有著非常有趣和詳細的歷史。實際上,當前版本的百勝( 用於企業發行版) DNF( 對於社群) 組合了幾個開源專案,以提供它們當前的功能。

最初,RedHat 使用了一個名為rpm( 紅帽包管理器) ,至今仍在使用。但是,它的主要用途是安裝RPM ,這是您在本地擁有的,而不是搜尋軟體儲存庫。包管理器名為up2date 建立的目的是通知使用者包的更新,並使他們能夠搜尋遠端儲存庫並輕鬆安裝依賴項。在達到目的同時,一些社群成員認為up2date 有一些明顯的缺點。

目前對百勝的咒語來自幾種不同的社群努力。YellowdogUpdater(YUP) 是由Terra 軟體解決方案公司的人員在1999-2001 年開發的,作為圖形化安裝程式的後端引擎。黃狗Linux 。杜克大學喜歡是的想法,並決定改進它。他們創造了改良的黃狗更新器(Yum) 它最終被改造成幫助管理大學的紅帽Linux 系統。百勝越來越受歡迎,據估計,到2005 年,它將被Linux 市場的一半以上所使用。今天,幾乎所有使用RPM Linux 發行版都使用YUM 進行包管理( 除了一些顯著的例外)

基於 debian 的包管理器

Debian 是目前維護最古老的Linux 發行版之一,它的系統非常類似於基於RPM 的系統。他們用.deb 包,可以由名為dpkg. dpkg 非常類似於rpm 因此,它是為管理本地可用的包而設計的。它不進行依賴解析( 儘管它進行依賴檢查) ,也沒有與遠端儲存庫互動的可靠方法。為了提高使用者體驗和易用性,debian 專案委託了一個名為神靈。這個代號最終被放棄,改為高階包裝工具(APT).

基於 ARCH 的軟體包管理器

ARCH Linux 使用名為帕克曼。不像.deb .rpm 檔案,Pacman 使用了更傳統的tarball LZMA 2 壓縮(.tar.xz) 這使得Arch linux 包比其他形式的壓縮存檔要小得多( 例如gzip) 最初是在2002 年釋出的,Pacman 已經得到了穩步的迭代和改進。Pacman 的主要優點之一是它支援拱築體系,一種從源構建包的系統。構建系統包含一個名為PKGBUILD 的檔案,該檔案包含後設資料( 例如版本號、修訂、依賴項等) 以及一個shell 指令碼,其中包含編譯符合Arch Linux 要求的包所需的標誌。然後將產生的二進位制檔案打包到上述檔案中。.tar.xz 檔案供帕克曼使用。

這個系統導致建立了ARCH 使用者庫(Aur) 是一個社群驅動的儲存庫,包含PKGBUILD 檔案和支援補丁或指令碼。這使得幾乎無窮無盡的軟體可以在Arch 中獲得。這個系統的明顯優點是,如果使用者希望向公眾提供軟體,他們不需要經過官方渠道才能在主要儲存庫中接受軟體。缺點是它依賴社群管理,類似於碼頭樞紐,CANTEN 的快照包,或其他類似的機制。有許多特定於Aur 的包管理器,它們可以用於從Aur 中的PKGBUILD 檔案中下載、編譯和安裝。

結語

當然,本文只觸及包管理器所能做的事情的表面。還有很多其他的包管理器,我無法在這個空間中介紹。一些發行版,比如Ubuntu ElementOS ,已經竭盡全力提供了一種圖形化的包管理方法。最後推薦 Linux 就該這麼學》 這本書,非常適合小白入門~


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2655378/,如需轉載,請註明出處,否則將追究法律責任。

相關文章