為什么Linux要使用Deb、RPM等安裝包,而不是直接解壓可運(yùn)行?
很多人安裝完Linux,就會(huì)安裝一些自己喜歡的軟件! 與我而言,喜歡搜狗輸入法,我就會(huì)去它的主頁下載! 這個(gè)時(shí)候,使用Ubuntu系統(tǒng)的我就會(huì)選擇Deb格式的軟件包,雖然搜狗在官方主頁上面提供了對應(yīng)“Windows”、“Debian”、“RedHat”三種操作系統(tǒng)的下載文件。
其實(shí)Windows對應(yīng)的是Exe文件。 Debian對應(yīng)deb為后綴名的文件! RedHat對應(yīng)的是rpm為后綴名的文件! 那為什么要提供三種格式呢? 一方面是因?yàn)椴僮飨到y(tǒng)的不同,Windows和Linux的不同,Debian和Redhat都是Linux,而Windows顯然是Windows!
那為什么同是Linux,又分為Deb和Rp兩種格式呢? 這就是我們今天的主題。1、“分裂”的Linux 雖然都是Linux,但是Debian和RedHat唯一的相同之處都是使用Linux內(nèi)核! 這和Linux本身的發(fā)展有關(guān)。 在Linux發(fā)展的早期,只是一個(gè)有啟動(dòng)功能、內(nèi)存管理、文件讀寫功能的操作系統(tǒng)內(nèi)核! 但是,現(xiàn)在的Linux有什么呢? 有Gnome、KDE、Xface桌面,有BSH、FishShell、Zsh等各種Shell,有各種Nginx等實(shí)用軟件! 那除了內(nèi)核以外,多出來的這些東西,是怎么出現(xiàn)在硬盤里的呢? 其實(shí)是集成而來! 有了Linux的內(nèi)核很好,但是光有一個(gè)光禿禿的內(nèi)核有什么用呢? 操作系統(tǒng)是需要應(yīng)用的! 于是,就有一些Linux愛好者把Linux內(nèi)核和各種實(shí)用程序集成到一起,做好了安裝界面,就形成了所謂的“發(fā)行版”! 最早的發(fā)行版本現(xiàn)在依然存在,名字叫Slackware,依然活著。后來就出現(xiàn)了Debian、SUSE、Redhat這些大家很熟悉的名字! 有了這些發(fā)行版本,就讓用戶有了“開箱即用”的體驗(yàn)。 至此,Linux才得到了大量用戶,抹平了以前的高門檻,告別以前需要“自己下載內(nèi)核、自己手工編譯”的刀耕火種時(shí)代! 從上面的描述可以看出,發(fā)行版本其實(shí)就是一個(gè)“集合包”! Linux有了很多種發(fā)行版本,有了很多集合包,主要的區(qū)別就出現(xiàn)了-軟件集合的方式不同! 可能這個(gè)發(fā)行版本的A程序,配置文件放在/etc的ProgramA目錄下面,在另外一個(gè)發(fā)行版本里面A的配置文件放在它的可執(zhí)行文件的同目錄下面。 Linux并沒有一個(gè)統(tǒng)一的存放標(biāo)準(zhǔn),反正能運(yùn)行就行! Linux開始分裂了!2、程序的依賴 隨著Linux發(fā)行版本的升級(jí),很多發(fā)行版本采取了更加"高明“的做法,對程序安裝方法進(jìn)行了改進(jìn)! 我們知道,程序其實(shí)并不是孫悟空,直接從石頭里面蹦出來,而是經(jīng)常需要依賴一些“庫”! 這些庫,都是一些非常好用的功能集合體。 利用這些庫作為基礎(chǔ),就會(huì)大幅度提高開發(fā)效率! Linux的程序也不例外,很多程序都是在已有庫的基礎(chǔ)上面進(jìn)行開發(fā)! 那如何管理這些依賴呢? 這些linux發(fā)行版,都采取了一種“軟件包”機(jī)制! 當(dāng)安裝A軟件的時(shí)候,如果發(fā)現(xiàn)它需要基礎(chǔ)庫B,就會(huì)先自動(dòng)下載B進(jìn)行安裝。
上面是安裝Docker這個(gè)軟件的時(shí)候,apt提示的“依賴安裝包”!
這就是apt、dnf等Linux的“Package Manger”工具的功能。 而在那里記錄這些依賴信息呢? 其實(shí)就在Deb、RPM這些軟件包里面。當(dāng)開發(fā)者上傳Deb格式包到服務(wù)器的時(shí)候,系統(tǒng)就會(huì)讀取器內(nèi)部信息,把依賴記錄下來。有人下載安裝的時(shí)候,就會(huì)自動(dòng)提示安裝這些依賴包,非常方便!
所以,Deb、RPM都是一些帶有程序“元信息”的包,記錄了軟件的版本、依賴軟件等信息。
只要安裝這些軟件,包管理系統(tǒng)就能自動(dòng)下載依賴,進(jìn)行安裝!3、安裝不僅僅是安裝 既然都是包含依賴,那一種格式不就可以了? 當(dāng)然不是。 因?yàn)槌艘蕾嚕€有“文件放在哪里”和“安裝腳本配置”這些事情! 這些事情,其實(shí)都很第一項(xiàng)的“分裂”有關(guān)! Linux版本不同,存放路徑就不一樣。 為了單純處理這些不同,就需要針對不同的系統(tǒng),進(jìn)行特別定制! A程序的文件在Redhat上面放在“/usr/bin”目錄下面,在Debian上面就放在“/usr/share/bin”上面。 由此,誕生了不同的安裝路徑。 另外,如果需要配置文件定制,軟鏈接定制,都需要特殊的配置。 安裝包,就是為了處理這些雜事來的!
至此,我們理解了Deb、RPM這些包的性質(zhì)和作用!
總結(jié) 因?yàn)長inux發(fā)現(xiàn)版本的各自為政,安裝位置不同,包依賴處理機(jī)制不同,每一種發(fā)行版都有自己的安裝包格式!
Linux 的多樣性既是優(yōu)勢也是挑戰(zhàn),不同軟件包格式的存在正是其生態(tài)繁榮的見證。了解 Deb 與 RPM 的差異,不僅能幫助你更高效地管理系統(tǒng),也能讓你理解開源社區(qū) "和而不同" 的協(xié)作哲學(xué)。下次安裝軟件時(shí),不妨多留意包格式背后的技術(shù)故事,讓你的 Linux 使用體驗(yàn)更加得心應(yīng)手。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,也可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索,助力你在 Linux 運(yùn)維之路上穩(wěn)步前行。
會(huì)員登錄
賬號(hào)登錄 還沒有賬號(hào)?立即注冊