岑鵬瑞++吳玲達(dá)++楊超
摘要:從PC操作系統(tǒng)版本入手,結(jié)合開源平臺(tái)下軟件管理的特點(diǎn),給出了操作系統(tǒng)軟件管理平臺(tái)架構(gòu)的一般形式,并對Linux下常用軟件包管理工具及圖形化管理前端進(jìn)行系統(tǒng)介紹,分析了各自的優(yōu)缺點(diǎn),最后展望了Linux軟件包管理工具的發(fā)展趨勢。
關(guān)鍵詞: Linux平臺(tái);軟件管理;架構(gòu);軟件包管理工具;圖形化前端
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)17-0056-04
The Present Situation of Software Management in Linux
CEN Peng-rui, WU Ling-da, YANG Chao
(Academy of Equipment, Science and Technology on Complex Electronic System Simulation Laboratory, Beijing 101416, China)
Abstract: From the PC version of the operating system ,combining the characteristics of the software management system based on open source platform ,gives the general form of the operating system software management platform architecture.Meanwhile,the software package management tools and graphical front-end management system under Linux are introduced, analyzing the advantages and disadvantages. Finally, the development trend of the linux package management tools is forecasted.
Key words:the platform under Linux; software management; architecture; the software package management tools; graphical front-end
在PC操作系統(tǒng)領(lǐng)域,如今較為常見的有微軟公司的Windows系列操作系統(tǒng)、蘋果公司的Mac OS系列操作系統(tǒng)以及Linux系列操作系統(tǒng)中比較流行的版本,如紅帽、Ubuntu等。Linux是UNIX的重新實(shí)現(xiàn)[1],是一種非盈利性的操作系統(tǒng),開發(fā)者遍布全球,完全出于興趣愛好,采用由程序員慷慨地向社區(qū)貢獻(xiàn)自己編寫代碼的開發(fā)模式,遵循開源代碼最嚴(yán)格的GPL開源代碼協(xié)議,做到一切修改都必將回饋社區(qū),具有免費(fèi)、開源軟件豐富、開放性等特點(diǎn)。因?yàn)槠渚哂歇?dú)特優(yōu)勢,Linux發(fā)展迅速,成為操作系統(tǒng)領(lǐng)域一個(gè)必不可少的分支。在桌面領(lǐng)域,雖然Windows仍然占據(jù)絕對主導(dǎo)地位,但Linux多種發(fā)行版本也發(fā)展迅速,如Ubuntu、openSUSE等;在服務(wù)器領(lǐng)域,Linux獲得IBM、HP、Novell、Oracle等IT硬件巨頭的支持,市場份額領(lǐng)先;同時(shí),2008年誕生的基于Linux的手機(jī)操作系統(tǒng)Android如今已發(fā)展成為手機(jī)操作系統(tǒng)的主流。
Linux具有開源優(yōu)點(diǎn),技術(shù)支持者和軟件更新者來自世界各地,其軟件開發(fā)模式從傳統(tǒng)的集中開發(fā)模式轉(zhuǎn)向分散式開發(fā)模式[2],這也同時(shí)帶給Linux下軟件包種類、數(shù)量繁多,軟件包之間依賴性強(qiáng)等缺點(diǎn),文獻(xiàn)[2]對開源軟件平臺(tái)的特點(diǎn)進(jìn)行了比較全面的總結(jié),指出Linux平臺(tái)下強(qiáng)調(diào)軟件重用,重用不僅限于項(xiàng)目內(nèi)部,更廣泛地發(fā)生在不同開源項(xiàng)目之間,使得應(yīng)用程序與操作系統(tǒng)、應(yīng)用程序之間的依賴關(guān)系、沖突關(guān)系更為復(fù)雜,缺乏統(tǒng)一的組織進(jìn)行管理,提出需要由開源發(fā)行操作系統(tǒng)提供一套有效的機(jī)制。那么,怎樣更高效便利地對眾多的軟件包進(jìn)行管理,以方便用戶獲取、安裝和使用軟件,這給Linux平臺(tái)下的軟件管理人員提出了嚴(yán)峻的挑戰(zhàn)。
1 操作系統(tǒng)軟件管理架構(gòu)
1.1 Linux版本
Linux操作系統(tǒng)是指基于Linux內(nèi)核開發(fā)的操作系統(tǒng),其不同的發(fā)行版本是由開發(fā)人員在Linux內(nèi)核基礎(chǔ)上融入自己的特色打包發(fā)布而來的。當(dāng)前比較流行的Linux發(fā)行版本版本樹,如圖1所示:
由Linux版本樹可以清晰地看到,當(dāng)前國際上比較有名的Linux發(fā)行版本公司有Red Hat和Novell公司,還有社區(qū)提供的操作系統(tǒng)版本,在中國,主要有中國CNN聯(lián)合實(shí)驗(yàn)室提供的Ubuntu Kylin。總體上有企業(yè)級應(yīng)用收費(fèi)版本和社區(qū)免費(fèi)版本之分,各家有各家的特點(diǎn),與市面上主流的Windows操作系統(tǒng)和蘋果的mac操作系統(tǒng)相比,開發(fā)力量相對分散,競爭力相對欠缺。
1.2 軟件管理架構(gòu)模型
我們通常所說的計(jì)算機(jī)軟件有系統(tǒng)軟件和應(yīng)用軟件之分[3]。操作系統(tǒng)就屬于系統(tǒng)軟件且在系統(tǒng)軟件中占有核心地位,能夠有效地協(xié)調(diào)、管理計(jì)算機(jī)硬件,應(yīng)用軟件等資源,使計(jì)算機(jī)高效工作。這里所說的軟件管理架構(gòu)模型是指操作系統(tǒng)對應(yīng)用軟件管理的架構(gòu)模型。
目前,Windows操作系統(tǒng)在個(gè)人PC桌面領(lǐng)域占據(jù)大部分市場份額,在操作系統(tǒng)領(lǐng)域長期占有統(tǒng)治地位;Mac OS操作系統(tǒng)占據(jù)一定市場份額,在國外相對國內(nèi)比較流行,Linux系統(tǒng)的用戶則是最少的,這與人們長期形成的使用習(xí)慣以及操作系統(tǒng)本身的界面友好性、使用方便性存在很大的關(guān)系,要改變這種局面,是一個(gè)漫長的歷程。隨著軟硬件技術(shù)地不斷發(fā)展進(jìn)步,操作系統(tǒng)上能夠安裝滿足人們各類需求的應(yīng)用軟件層出不窮,如網(wǎng)絡(luò)聊天、視頻播放、音樂播放、輸入法等,同時(shí)這些應(yīng)用軟件在不斷地優(yōu)化更新。那么各種操作系統(tǒng)是如何對這些應(yīng)用軟件的下載、安裝以及卸載進(jìn)行管理的。
我們都很熟悉,Windows平臺(tái)下的軟件管理,主要是通過在操作系統(tǒng)中安裝軟件管家客戶端來完成,軟件管家收集了市面上流行的海量應(yīng)用軟件,并都經(jīng)過人工安裝和殺毒軟件測試,統(tǒng)一放在軟件倉庫中。比較流行的有360軟件管家、騰訊軟件管家等,該類型客戶端給用戶提供了軟件寶庫(倉庫)、軟件升級、軟件卸載、軟件下載等圖像化界面列表,并對應(yīng)用軟件按照應(yīng)用類型分類管理,用戶下載安裝任務(wù)在后臺(tái)完成,極大地方便了用戶對應(yīng)用軟件的管理。Mac OSX平臺(tái)下的軟件管理,主要是通過在互聯(lián)網(wǎng)(Max X蘋果網(wǎng)、蘋果在線)上搜索到對應(yīng)蘋果系統(tǒng)的軟件源進(jìn)行下載,然后打開下載下來的安裝文件后把相應(yīng)的圖標(biāo)拖放到Application中,在Application中找到打開即可使用,就像Windows平臺(tái)下使用其綠色軟件一樣。目前Linux平臺(tái)下的軟件管理相對而言沒有Windows和Mac OSX下的軟件管理方便友好,主要是通過終端命令或者是一些簡單的圖形化前端來實(shí)現(xiàn)。造成這種局面的主要原因是一方面由于Linux的開源特點(diǎn),軟件之間的依賴性強(qiáng),給軟件管理帶來了一定程度的難度;另一方面由于Linux桌面系統(tǒng)的市場占有額小,這就使得軟件開發(fā)商缺少開發(fā)并不斷優(yōu)化軟件管理前端的動(dòng)力。
通過對主流操作系統(tǒng)平臺(tái)下軟件管理的分析,不難看出,操作系統(tǒng)下軟件管理架構(gòu)的一般形式通常采用客戶機(jī)和服務(wù)器(C/S)架構(gòu)。該架構(gòu)的突出優(yōu)點(diǎn)就是可以將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),充分利用兩端硬件環(huán)境資源。文獻(xiàn)[2]給出了開源平臺(tái)下軟件管理的一般結(jié)構(gòu),其簡化圖可以用圖2表示。
由圖2可以看出,開源平臺(tái)下的應(yīng)用軟件管理系統(tǒng)是通過軟件包管理和分發(fā)系統(tǒng)來完成的[2],分發(fā)系統(tǒng)部署在服務(wù)器端,由專門的管理人員進(jìn)行管理維護(hù),并通過網(wǎng)絡(luò)向用戶提供軟件包信息獲取和下載服務(wù),軟件包管理部分部署在客戶端,負(fù)責(zé)幫助用戶對獲取來的軟件包格式和內(nèi)容進(jìn)行解析從而完成相應(yīng)操作。通過這兩部分的協(xié)調(diào)配合,更好地解決了開源軟件的依賴性問題和獲取、安裝等問題。
2 Linux軟件包管理工具
2.1 軟件包格式
當(dāng)前各類應(yīng)用軟件以軟件包的形式被提供給使用者,是指將應(yīng)用程序、配置文件以及管理數(shù)據(jù)等統(tǒng)一組織起來得到的,分為二進(jìn)制軟件包和源碼包,易用性強(qiáng)、靈活性高和擴(kuò)展性廣。Linux平臺(tái)下常用的應(yīng)用軟件包種類主要有.rpm和.deb兩類,兩類格式的軟件包采用了不同的組織方式并且在一定條件下可以相互轉(zhuǎn)換。Novell公司和RedHat公司發(fā)行的操作系統(tǒng)版本采用.rpm格式的軟件包,社區(qū)以及中國CNN聯(lián)合實(shí)驗(yàn)室的發(fā)行版本采用.deb格式的軟件包,RPM軟件包通過給出的spec文件控制軟件包制作,deb軟件包由ar工具對deb標(biāo)志文件段、控制文件和安裝文件壓縮生成。兩種格式軟件包的組成結(jié)構(gòu)[4]如圖3所示。
由軟件包組成結(jié)構(gòu)不難看出,.rpm和.deb包中不但包含應(yīng)用程序,而且還提供了軟件包的相關(guān)信息及依賴性關(guān)系描述等,一定程度上可以方便軟件安裝過程。
2.2 軟件包管理工具
不同的發(fā)行版本采用的軟件管理技術(shù)不同,目前Linux平臺(tái)下開源軟件管理技術(shù)主要有Apt/dpkg和Yum/RPM兩大分支,同時(shí)還有基于這些技術(shù)實(shí)現(xiàn)的較為友好的圖形化管理前端(免費(fèi)),如Ubuntu軟件中心、新立得軟件包管理器、Yumex、PackageKit等,圖4給出了Linux主流版本中各自適用的軟件包及軟件包管理工具之間的演化關(guān)系。
軟件包管理工具的設(shè)計(jì)理念是:簡化定位和下載軟件包的過程、自動(dòng)進(jìn)行系統(tǒng)更新和識別、方便管理軟件包之間的依賴關(guān)系。dpkg和rpm是最基本的軟件包管理工具,能在終端基本滿足對軟件包進(jìn)行的操作,大大減少安裝軟件的工作量,但是他們?nèi)匀徊荒苡行Ы鉀Q軟件依賴性問題,之后便以此為前端產(chǎn)生了高級別的軟件包管理工具APT和yum,可以自動(dòng)檢測軟件依賴性問題下載并安裝所需軟件甚至可以一次性更新整個(gè)系統(tǒng)上所有的軟件包,方便了軟件的安裝、升級和卸載。然而人們所追求的是能夠有像Windows平臺(tái)下各類軟件管家一樣的更為方便友好的圖形化界面軟件管理方式,于是在已有基礎(chǔ)上Linux平臺(tái)下的各種圖形化軟件管理前端應(yīng)運(yùn)而生。
dpkg安裝軟件包時(shí),讀取軟件包內(nèi)容進(jìn)行安裝并記錄控制文件中的信息,為軟件包維護(hù)、依賴關(guān)系處理及安裝故障等的處理提供參考信息,軟件包的依賴關(guān)系可以從控制文件中的depends、recommends、suggests、conflicts等關(guān)系中獲取?;赿pkg的軟件包管理工具APT能夠主動(dòng)從軟件倉庫中獲取軟件包信息列表并在本地構(gòu)建軟件包描述和依賴關(guān)系數(shù)據(jù)庫。當(dāng)使用apt命令安裝軟件包時(shí),apt首先從本地?cái)?shù)據(jù)庫中找到軟件包信息及依賴關(guān)系然后主動(dòng)從軟件倉庫中下載相應(yīng)的軟件包并對下載下來的軟件包按依賴關(guān)系進(jìn)行順序性安裝。
使用RPM安裝軟件包時(shí),rpm命令會(huì)把RPM包中的文件安裝到系統(tǒng)的指定位置,同時(shí)會(huì)把這些文件的安裝位置和包的信息記錄在RPM數(shù)據(jù)庫[4]中,這一點(diǎn)與dpkg存在一定的相似之處,數(shù)據(jù)庫中的文件信息在RPM進(jìn)行安裝、升級或卸載時(shí)會(huì)有相應(yīng)更新。而在實(shí)際應(yīng)用中由于軟件依賴關(guān)系復(fù)雜、大面積安裝、軟件搜索等的困擾,給使用者遇到了諸多不便,為了解決這些問題,yum軟件包管理工具被設(shè)計(jì)出來。yum通過在服務(wù)器端構(gòu)建RPM文件倉庫和使用createrepo命令生成索引文件,在客戶端構(gòu)建RPM數(shù)據(jù)庫和設(shè)定相應(yīng)配置文件來管理軟件,可以從服務(wù)器端取得安裝軟件所依賴的其他軟件信息,先安裝他們,然后在安裝我們需要的軟件,可更有效地解決應(yīng)用軟件的獲取、安裝、更新和卸載中存在的問題。
dselect、aptitude和tasksel屬于文本窗口界面(使用窗口菜單完成軟件包管理任務(wù))的軟件包管理工具[5]。其中dselect是使用菜單界面的控制臺(tái)前端包管理工具,運(yùn)行過程中同時(shí)使用APT和dpkg;aptitude整合了dselect和apt-get的所有功能,并提供更多特性,為apt提供了字符界面的前端命令行管理方式,Aptitude會(huì)記住哪些包是用戶自己安裝的,哪些包是為了滿足依賴關(guān)系而安裝的并在依賴包不被需要時(shí)自動(dòng)卸載,同時(shí)具有內(nèi)建的包過濾器[5];Synaptic則是更為友好的基于GTK的圖形化APT前端程序,在Ubuntu系統(tǒng)中被稱為“新力得”軟件包管理器,底層依賴APT包管理命令,除能夠?qū)崿F(xiàn)對軟件包的基本操作之外,還增加了軟件包過濾、版本鎖定、強(qiáng)制安裝等功能,對于Linux初級用戶來說,具有上手方便的特點(diǎn)。
類似于Synaptic,yumex和kyum是yum的圖形化前端,在使用他們時(shí),必須先安裝配置yum。二者都提供給用戶通過單擊的方式選擇軟件庫、軟件包和組等功能,能方便地完成軟件管理中的相應(yīng)操作。
PackageKit是一個(gè)能更加方便地安裝和更新軟件的軟件包管理工具,針對Gnome和KDE不同桌面環(huán)境提供不同版本,其設(shè)計(jì)意圖是能夠統(tǒng)一不同發(fā)行版本中的圖形化軟件管理工具,成為一個(gè)通用包管理器,支持將YUM、APT等作為后端[6]。
以上所述各類軟件包管理工具分類及各類特點(diǎn)歸納總結(jié)如表1所示。
2.3 對比分析
通過對以上軟件管理工具的介紹,他們的共同點(diǎn)是都能夠從配置的軟件倉庫中自動(dòng)下載目標(biāo)軟件包并進(jìn)行安裝,軟件倉庫在分發(fā)端由專門的人員來維護(hù),從而保證了軟件來源的可靠性。在解決軟件依賴性過程中為了避免繁瑣地手動(dòng)下載、安裝每一個(gè)需要的依賴包,YUM和APT管理方式又提供了自動(dòng)從倉庫中下載軟件包和包描述信息并在客戶端自動(dòng)安裝依賴包的機(jī)制,在解決用戶界面友好性、操作簡單性上,各類圖形界面管理方式又提供了可行的實(shí)現(xiàn)。
APT和YUM的不同之處是,APT在軟件倉庫端對同一軟件的不同版本按照穩(wěn)定性進(jìn)行分類維護(hù),分為unstable、testing和stable三種發(fā)布,這使得二進(jìn)制應(yīng)用軟件包的發(fā)布流程更加規(guī)范。
3 總結(jié)與展望
隨著應(yīng)用軟件數(shù)量和特定領(lǐng)域應(yīng)用軟件的不斷發(fā)展以及Linux市場占有率的不斷增加,對Linux平臺(tái)下采用的軟件管理技術(shù)的友好性和安全性等提出了進(jìn)一步挑戰(zhàn)。雖然基于APT和YUM軟件管理機(jī)制的圖形化軟件管理前端在界面友好性方面有了很大進(jìn)步,但與Windows操作系統(tǒng)軟件管理工具的界面友好性相比還存在很大的發(fā)展空間。另外,在特定應(yīng)用領(lǐng)域?qū)μ囟☉?yīng)用軟件的權(quán)限控制及保密性傳輸?shù)确矫娲嬖诙贪?,這需要將成熟的信息系統(tǒng)安全、權(quán)限控制策略應(yīng)用到軟件包管理工具中,從而增加應(yīng)用軟件的安全性、完整性以及不可抵賴性等。同時(shí),缺乏統(tǒng)一的組織進(jìn)行軟件版本發(fā)布、依賴關(guān)系處理和兼容性測試等,各發(fā)行版公司應(yīng)該整合資源,增加溝通,制定統(tǒng)一的規(guī)范標(biāo)準(zhǔn),使軟件管理朝著共同的方向發(fā)展。
參考文獻(xiàn):
[1] 劉憶智. Linux從入門到精通[M].北京: 清華大學(xué)出版社, 2014 .
[2] 顧昊,錢曉俊,梁洪亮.開源平臺(tái)下軟件管理技術(shù)研究[J]. 計(jì)算機(jī)應(yīng)用研究,2007,24(8):112-115.
[3] 王煜國.計(jì)算機(jī)軟件的日常管理與維護(hù)研究[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2013(6).
[4] 段繼剛.Linux軟件管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[M]. 北京:機(jī)械工業(yè)出版社, 2013.
[5] Osamu Aoki.Debian參考手冊[EB/OL]. http://qref.sourceforge.net.
[6] 曹江華.Linux系統(tǒng)管理員工具集[M]. 北京:電子工業(yè)出版社, 2013.