專利名稱:一種Linux操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及操作系統(tǒng)的移植和軟件包管理技術(shù)領(lǐng)域,特別涉及一種Linux操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法。
背景技術(shù):
為適用不同的芯片架構(gòu),Linux等操作系統(tǒng)需要相應(yīng)地做不同軟件包的調(diào)整。例如,難于直接將適用于Intel芯片X86架構(gòu)的平臺的Linux操作系統(tǒng)直接移植到基于龍芯芯片架構(gòu)的平臺上,而是要進行軟件包內(nèi)部及軟件包之間的調(diào)整。換而言之,適用不同芯片平臺的Linux操作系統(tǒng)之間的存在較多的潛在風(fēng)險,主要原因是適用于不同芯片平臺架構(gòu)的操作系統(tǒng)之間存在較大差異,也就導(dǎo)致系統(tǒng)的軟件包依賴出現(xiàn)差異。因此,在開發(fā)適用于新的芯片平臺的操作系統(tǒng)時,往往要修改(例如注釋掉)原操
作系統(tǒng)的軟件包依賴關(guān)系。然而,由于軟件包之間的依賴關(guān)系錯綜復(fù)雜,操作系統(tǒng)開發(fā)人員為了成功編譯軟件包,往往會在移植操作系統(tǒng)的過程中把一些必要的軟件包依賴關(guān)系注釋掉,從而導(dǎo)致通過移植得到的操作系統(tǒng)存在較大潛在風(fēng)險,帶來了操作系統(tǒng)的很多不穩(wěn)定因素。在實踐中,操作系統(tǒng)開發(fā)人員難于確定被注釋掉的軟件包依賴關(guān)系是否是操作系統(tǒng)確實不需要的依賴關(guān)系,因此往往需要在注釋的過程中不斷地反復(fù)測試。例如,每注釋掉一批依賴有關(guān)系便進行一些系統(tǒng)穩(wěn)定性測試,這會占用操作系統(tǒng)研發(fā)人員的大量時間。因此,如何提高操作系統(tǒng)移植或發(fā)布過程中軟件包依賴關(guān)系管理的效率是亟待解決的技術(shù)問題。此外,存在一些檢測Linux等操作系統(tǒng)是否滿足依賴關(guān)系的檢測方法,這些方法一般用于發(fā)布Linux操作系統(tǒng)時進行依賴性檢測。然而,這些方法只關(guān)注了對操作系統(tǒng)是否滿足依賴關(guān)系的檢測,往往忽視了在編譯軟件包的過程中被注釋掉的依賴關(guān)系也可能給所研發(fā)的Linux操作系統(tǒng)帶來長期潛在的不穩(wěn)定風(fēng)險。換而言之,現(xiàn)有技術(shù)中的檢測難以全面檢測出Linux操作系統(tǒng)是否滿足依賴關(guān)系,尤其難以檢測出因注釋掉一些依賴關(guān)系而導(dǎo)致的依賴關(guān)系問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題之一是需要提供一種較全面檢測出Linux操作系統(tǒng)是否滿足依賴關(guān)系,尤其難以檢測出因注釋掉一些依賴關(guān)系而導(dǎo)致的依賴關(guān)系問題。為了解決上述技術(shù)問題,本發(fā)明提供了一種能夠較全面檢測出Linux操作系統(tǒng)是否滿足依賴關(guān)系的Linux操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法。該方法包括基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫;獲取待檢測操作系統(tǒng)的所有軟件包的包名,得到軟件包包名集合BL ;根據(jù)參考依賴關(guān)系數(shù)據(jù)庫檢測軟件包包名集合BL中每個軟件包所依賴的軟件包的包名,得到集合BL中各個軟件包所依賴的軟件包的包名的集合BR ;
取集合BR和聚合BL的并集,得到集合BLl ;將在所述集合BLl中存在而所述集合BL中不存在的元素對應(yīng)的軟件包確定為所述待檢測操作系統(tǒng)缺失的軟件包。進一步,該方法還包括基于所述參考依賴關(guān)系數(shù)據(jù)庫查詢所述待檢測操作系統(tǒng)的集合BL中每個元素的依賴關(guān)系,得到集合BL中各個元素的依賴關(guān)系的集合RRS;將集合RRS中與所述待查詢操作系統(tǒng)缺失的軟件包中至少一個軟件包有關(guān)的依賴關(guān)系確定為所述待檢測操作系統(tǒng)缺失的軟件包依賴關(guān)系。進一步,該方法還包括通過裁剪一個與所述待檢測操作系統(tǒng)的架構(gòu)不同的操作系統(tǒng)來構(gòu)建所述參考操作系統(tǒng),使得裁剪得到的所述參考操作系統(tǒng)與所述待檢測操作系統(tǒng)的功能相一致。進一步,在所述基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫的步驟包括將所述參考操作系統(tǒng)的所有軟件包放入一目錄,利用createrepo命令生成所述目錄下的全部軟 件包的依賴關(guān)系數(shù)據(jù)庫,作為所述參考依賴關(guān)系數(shù)據(jù)庫。進一步,所述根據(jù)參考依賴關(guān)系數(shù)據(jù)庫查詢軟件包包名集合BL中每個軟件包所依賴的軟件包的包名的步驟中,可通過如下子步驟來查詢作為軟件包包名集合BL任意之一的軟件包P所依賴的軟件包的包名根據(jù)參考依賴關(guān)系數(shù)據(jù)庫的packages表確定與軟件包P對應(yīng)的軟件包唯一標識keyO ;基于參考依賴關(guān)系數(shù)據(jù)庫的requires表,根據(jù)軟件包標識keyO,確定與軟件包P對應(yīng)的軟件包文件名的集合setR ;基于參考依賴關(guān)系數(shù)據(jù)庫的provides和files表,確定提供集合setR中至少一個文件名的軟件包的軟件包唯一標識的集合setPey ;基于參考依賴關(guān)系數(shù)據(jù)庫的packages表確定所述集合setPey中各軟件包唯一標識對應(yīng)的軟件包名,作為軟件包P所依賴的軟件包的包名。此外,所述參考操作系統(tǒng)可為針對X86芯片結(jié)構(gòu)平臺的Linux操作系統(tǒng),所述待檢測操作系統(tǒng)為針對龍芯平臺的Linux操作系統(tǒng)。與現(xiàn)有技術(shù)相比,根據(jù)本發(fā)明的一個或多個實施例的方法可以較好地避免因操作搭建過程中注釋掉(或刪除)一些依賴關(guān)系而導(dǎo)致操作系統(tǒng)可能存在潛在穩(wěn)定性風(fēng)險的問題。雖然在下文中將結(jié)合一些示例性實施及使用方法來描述本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當理解,為并不旨在將本發(fā)明限制于這些實施例。反之,旨在覆蓋包含在所附的權(quán)利要求書所定義的本發(fā)明的精神與范圍內(nèi)的所有替代品、修正及等效物。本發(fā)明的其他優(yōu)點、目標,和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導(dǎo)。本發(fā)明的目標和其他優(yōu)點可以通過下面的說明書,權(quán)利要求書,以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中圖I是根據(jù)本發(fā)明實施例的操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法的流程圖2是本發(fā)明實施例中根據(jù)參考依賴關(guān)系數(shù)據(jù)庫查詢集合BL中某一軟件包包名為nameO的軟件包P所依賴的軟件包包名的流程圖。
具體實施例方式以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達成技術(shù)效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。下面參考圖1,以要搭建一個基于龍芯芯片、穩(wěn)定可靠的Linux操作系統(tǒng)為例,詳 細說明根據(jù)本發(fā)明實施例的操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法。步驟S110,構(gòu)建參考操作系統(tǒng)??赏ㄟ^裁剪一個主流的例如X86等與待檢測操作系統(tǒng)B的架構(gòu)類似架構(gòu)的Linux操作系統(tǒng)來構(gòu)建一參考操作系統(tǒng)A,這樣有助于得到更加穩(wěn)定的參考操作系統(tǒng)。裁剪完畢后,還可測試其各方面性能,以確保該X86架構(gòu)的參考Linux操作系統(tǒng)穩(wěn)定可靠。優(yōu)選地,使得裁剪得到的參考操作系統(tǒng)A與要搭建的適用于例如龍芯平臺的待檢測操作系統(tǒng)B的功能相一致,即盡可能相同或類似。需要說明的是,該步驟為可選步驟,也可以選用一個指定操作系統(tǒng)來作為參考操作系統(tǒng)。步驟S120,基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫。獲取參考操作系統(tǒng)A的所有軟件包,并新建一個目錄,將所有的軟件包放入該新創(chuàng)建的目錄,利用Iinux系統(tǒng)內(nèi)置的createrepo命令生成該參考操作系統(tǒng)的全部軟件包(即位于該新建目錄下的全部軟件包)的依賴關(guān)系數(shù)據(jù)庫,作為參考依賴關(guān)系數(shù)據(jù)庫。步驟S 130,獲取待檢測操作系統(tǒng)B的所有軟件包的包名,得到軟件包包名集合BL0步驟S140,根據(jù)參考依賴關(guān)系數(shù)據(jù)庫查詢軟件包包名集合BL中每個軟件包所依賴的軟件包的包名,得到集合BL中各個軟件包所依賴的軟件包的包名的集合BR,下文將結(jié)合圖2詳細說明該查詢過程。在查詢過程中,各軟件包所依賴的軟件包包名可能會重疊,重疊的軟件包包名則不再重復(fù)放入集合BR。步驟S150,取集合BR和集合BL的并集,得到集合BLl。例如,可將集合BL和集合BR中的元素放到一個列表中,然后將列表中出現(xiàn)兩次的元素去除,剩下的元素構(gòu)成集合BLl。步驟S160,將在集合BLl中存在而集合BL中不存在的元素對應(yīng)的軟件包確定為操作系統(tǒng)B缺失的軟件包。具體地,將集合BL和集合BLl做比較,將在BLl中存在而在BL中缺失的軟件包所構(gòu)成的集合BL2中的元素確定為操作系統(tǒng)B缺失的軟件包。
在本發(fā)明的一個優(yōu)選方案中,還可基于所構(gòu)建的參考依賴關(guān)系數(shù)據(jù)庫查詢操作系統(tǒng)B的每個軟件包(對應(yīng)于集合BL中的每個元素)的依賴關(guān)系,得到操作系統(tǒng)B的各個軟件包的依賴關(guān)系集合RRS,保存在文件filel。然后,將集合RRS中與集合BL2中至少一個軟件包有關(guān)的依賴關(guān)系確定為操作系統(tǒng)B缺失的軟件包依賴關(guān)系。發(fā)明人經(jīng)過實踐發(fā)現(xiàn),利用上述步驟的處理,可以較好地避免因操作搭建過程中注釋掉(或刪除)一些依賴關(guān)系而導(dǎo)致操作系統(tǒng)可能存在潛在穩(wěn)定性風(fēng)險的問題。下面參考圖2來詳細說明根據(jù)參考依賴關(guān)系數(shù)據(jù)庫查詢集合BL中某一軟件包包名為nameO的軟件包P所依賴的軟件包包名的詳細步驟。步驟S241,根據(jù)參考依賴關(guān)系數(shù)據(jù)庫的packages表確定與軟件包P對應(yīng)的軟件包唯一標識(packages-pkgkey) keyO。步驟S242,基于參考依賴關(guān)系數(shù)據(jù)庫的requires表,根據(jù)軟件包標識keyO,確定與軟件包P對應(yīng)的一個或一個以上軟件包文件名,該一個或一個以上軟件包文件名構(gòu)成文 件名(requires-name)集合 setR。步驟S243,基于參考依賴關(guān)系數(shù)據(jù)庫的provides和files表,確定提供集合setR中至少一個文件名的軟件包的軟件包唯一標識的集合setPey。更具體地,可輸入setR集合中的各個文件名,從參考依賴關(guān)系數(shù)據(jù)庫的provides和files表中分別獲得提供各個文件的軟件包的軟件包唯一標識(provides-pkgkey),所獲得的各個文件的軟件包的軟件包唯一標識構(gòu)成集合setPey。步驟S244,基于參考依賴關(guān)系數(shù)據(jù)庫的packages表確定集合setPey中各軟件包唯一標識對應(yīng)的軟件包名,作為軟件包P所依賴的軟件包的包名。針對集合BL中的各個元素分別執(zhí)行上述步驟S241至S244,即可得到軟件包包名集合BL中每個軟件包所依賴的軟件包的包名,即集合BR。此外,可通過類似地查詢處理來基于所構(gòu)建的參考依賴關(guān)系數(shù)據(jù)庫確定參考操作系統(tǒng)B的每個軟件包(對應(yīng)于集合BL中的每個元素)的依賴關(guān)系集RRS。在此不再展開說明。本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式上及細節(jié)上作任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準。
權(quán)利要求
1.一種Linux操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法,其特征在于,包括 基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫; 獲取待檢測操作系統(tǒng)的所有軟件包的包名,得到軟件包包名集合BL ; 根據(jù)參考依賴關(guān)系數(shù)據(jù)庫檢測軟件包包名集合BL中每個軟件包所依賴的軟件包的包名,得到集合BL中各個軟件包所依賴的軟件包的包名的集合BR ; 取集合BR和集合BL的并集,得到集合BLl ; 將在所述集合BLl中存在而所述集合BL中不存在的元素對應(yīng)的軟件包確定為所述待檢測操作系統(tǒng)缺失的軟件包。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括 基于所述參考依賴關(guān)系數(shù)據(jù)庫查詢所述待檢測操作系統(tǒng)的集合BL中每個元素的依賴關(guān)系,得到集合BL中各個元素的依賴關(guān)系的集合RRS ; 將集合RRS中與所述待查詢操作系統(tǒng)缺失的軟件包中至少一個軟件包有關(guān)的依賴關(guān)系確定為所述待檢測操作系統(tǒng)缺失的軟件包依賴關(guān)系。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,還包括 通過裁剪一個與所述待檢測操作系統(tǒng)的架構(gòu)不同的操作系統(tǒng)來構(gòu)建所述參考操作系統(tǒng),使得裁剪得到的所述參考操作系統(tǒng)與所述待檢測操作系統(tǒng)的功能相一致。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,在所述基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫的步驟包括 將所述參考操作系統(tǒng)的所有軟件包放入一目錄,利用createrepo命令生成所述目錄下的全部軟件包的依賴關(guān)系數(shù)據(jù)庫,作為所述參考依賴關(guān)系數(shù)據(jù)庫。
5.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述根據(jù)參考依賴關(guān)系數(shù)據(jù)庫查詢軟件包包名集合BL中每個軟件包所依賴的軟件包的包名的步驟中,通過如下子步驟來查詢作為軟件包包名集合BL任意之一的軟件包P所依賴的軟件包的包名 根據(jù)參考依賴關(guān)系數(shù)據(jù)庫的packages表確定與軟件包P對應(yīng)的軟件包唯一標識keyO ; 基于參考依賴關(guān)系數(shù)據(jù)庫的requires表,根據(jù)軟件包標識keyO,確定與軟件包P對應(yīng)的軟件包文件名的集合setR ; 基于參考依賴關(guān)系數(shù)據(jù)庫的provides和files表,確定提供集合setR中至少一個文件名的軟件包的軟件包唯一標識的集合setPey ; 基于參考依賴關(guān)系數(shù)據(jù)庫的packages表確定所述集合setPey中各軟件包唯一標識對應(yīng)的軟件包名,作為軟件包P所依賴的軟件包的包名。
6.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述參考操作系統(tǒng)為針對X86芯片結(jié)構(gòu)平臺的Linux操作系統(tǒng),所述待檢測操作系統(tǒng)為針對龍芯平臺的Linux操作系統(tǒng)。
全文摘要
本發(fā)明公開了一種Linux操作系統(tǒng)軟件包及其依賴關(guān)系缺失檢測方法。該方法包括基于參考操作系統(tǒng)構(gòu)建參考依賴關(guān)系數(shù)據(jù)庫;獲取待檢測操作系統(tǒng)的所有軟件包的包名,得到軟件包包名集合BL;根據(jù)參考依賴關(guān)系數(shù)據(jù)庫檢測軟件包包名集合BL中每個軟件包所依賴的軟件包的包名,得到集合BL中各個軟件包所依賴的軟件包的包名的集合BR;取集合BR和聚合BL的并集,得到集合B L1;將在所述集合BL1中存在而所述集合BL中不存在的元素對應(yīng)的軟件包確定為所述待檢測操作系統(tǒng)缺失的軟件包。該方法能夠較全面檢測出Linux操作系統(tǒng)是否滿足依賴關(guān)系。
文檔編號G06F9/44GK102945155SQ201210406278
公開日2013年2月27日 申請日期2012年10月22日 優(yōu)先權(quán)日2012年10月22日
發(fā)明者徐晶晶 申請人:中標軟件有限公司