專利名稱:一種unix操作系統(tǒng)中逆向查找包被依賴的方法
技術(shù)領(lǐng)域:
本發(fā)明是一種在類unix操作系統(tǒng)里面查找包和包相互依賴,查找包被依賴的技 術(shù)。具體描述為在系統(tǒng)的包庫環(huán)境下,根據(jù)包的特殊描述文件,分析包的組織結(jié)構(gòu),在包庫 組成的有限圖集里按照一定的算法查找包被依賴的方法。
背景技術(shù):
隨著solaris系統(tǒng)的普及程度不斷加深,使用和開發(fā)solaris的群體越來越大, 應(yīng)用范圍和研究也多元化。系統(tǒng)開發(fā)和使用過程中經(jīng)常會遇到一些情況1)用戶刪除了某 包之后,導(dǎo)致其他的功能不能運(yùn)行,提示系統(tǒng)缺少某個(gè)庫文件或者連接文件,但是刪除它之 前,又不能清晰的找出哪些功能包依賴它;2)系統(tǒng)過于龐大,系統(tǒng)運(yùn)行相當(dāng)耗費(fèi)軟硬件資 源,某方面的應(yīng)用,系統(tǒng)性能不佳;3)對于一個(gè)開發(fā)者或者普通使用者,過于復(fù)雜的開發(fā)環(huán) 境或者很多娛樂等功能都是不需要的;4)從事系統(tǒng)裁減方面的開發(fā)者對包的多少和大小 會非常在意,他們非常關(guān)心的是,一個(gè)不需要的包能否最終從操作系統(tǒng)中刪除;5)開發(fā)過 程中,新安裝的某個(gè)關(guān)鍵的腳本程序不能運(yùn)行。這種情況不管是lirmx的系統(tǒng)還是unix系 統(tǒng)都存在。Linux下的rpm工具,只能知道某個(gè)文件包依賴其他哪些包;在刪除包的時(shí)候會不 斷提示它被其他包依賴。也就是A包被B、C包文件依賴,如果需要刪除應(yīng)用包A,需要首先 刪除B、C之后再刪除A包。Unix下的pkg工具也是如此。兩種包管理工具都面臨同一個(gè)問 題刪除這個(gè)包的時(shí)候,可能會提示還有其他的包依賴這個(gè)包。不斷手動刪除依賴它的包。 非常耗費(fèi)精力,效率非常低,而且不能保證系統(tǒng)刪除之后,功能的完整性。本專利通過系統(tǒng)的包庫和包本身的基本特性,可以理順系統(tǒng)中包的相互關(guān)系,可 以查看包在系統(tǒng)中被其他哪些包所依賴。方便用戶和開發(fā)者對包有一個(gè)整理把握,輕松的 定制化系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明是利用系統(tǒng)上現(xiàn)有的包庫基礎(chǔ),通過對系統(tǒng)中包的組織結(jié)構(gòu)分析,在有限 圖集的基礎(chǔ)上循環(huán)遍歷所有包。理順包和包之間的關(guān)系,查找到包之間的系統(tǒng)依賴和被依 賴的關(guān)系。在包倉庫IPS的基礎(chǔ)上,查找同一個(gè)版本中所有包的相互依賴關(guān)系,根據(jù)包的 依賴關(guān)系,有效的對系統(tǒng)進(jìn)行輕松的定制化工作,整個(gè)包的逆向查找包括1)包倉庫技術(shù) IPS, 2)包組織技術(shù),3)逆向查找包的方法,其中1)包倉庫技術(shù)IPS,是包管理技術(shù)中的重要部分,它將所有的功能包按照一定的 規(guī)則組織起來,按照發(fā)布版本,組成一個(gè)集合;發(fā)布到網(wǎng)上服務(wù)器,供所有的開發(fā)者和應(yīng)用 者使用,客戶端裝有相應(yīng)的客戶端工具,用戶通過網(wǎng)絡(luò)訪問IPS,進(jìn)行一些操作,包括包的安 裝,卸載,升級,查看包的描述特性,特性包含包安裝到哪個(gè)目錄,安裝后的名稱,需要系統(tǒng) 的哪些依賴文件;2)包組織技術(shù),opensolaris下包是以文件夾的方式組織起來的所有的功能文件和描述文件都在同一個(gè)文件目錄下,文件目錄名稱也就是包的名稱,這是包組織結(jié)構(gòu)的 特點(diǎn),文件夾下面包含包功能的二進(jìn)制文件,源碼文件,描述文件信息;3)逆向查找方法,利用包的組織結(jié)構(gòu)特殊性,并且利用包在一個(gè)版本的IPS系統(tǒng)中的集合性,找到系統(tǒng)中的功能包被其他哪些包依賴,包的描述文件中的關(guān)鍵描述詞記錄 著包的依賴特性,通過逆向遍歷描述集,記錄包的依賴關(guān)系。具體步驟內(nèi)容如下1)包在系統(tǒng)框架下組成一個(gè)有限集合,集合中的元素有的是單個(gè)個(gè)體,有的是一 個(gè)有限的單向連通圖集,通過這些圖集可達(dá)性,找到集合里面所有的包相互關(guān)系;2)包是以文件夾的方式組織的,文件夾名稱就是包名,文件夾下面有包的功能文 件,這些文件是以它本身的哈希值作為文件名,鑒于哈希值的唯一性特點(diǎn),以哈希值命名的 文件在整個(gè)系統(tǒng)中唯一性,最重要的一個(gè)文件就是manifest文件,它的功能類似于linux 系統(tǒng)下rpm包組織方式的.SPEC文件,Manifest除了負(fù)責(zé)包下各個(gè)文件的安裝路徑,權(quán)限, 安裝后名稱,包功能描述外,還有一個(gè)重要的作用就是,它記錄安裝這個(gè)包所需要的依賴 包,一兩個(gè)或十幾個(gè),也就是說,安裝這個(gè)包,包管理工具自動會檢測系統(tǒng)是否已經(jīng)安裝了 這些包文件,有,則系統(tǒng)會正常的安裝這個(gè)包,沒有,則首先安裝這些包;3)根據(jù)包描述文件manifest中的記錄,逆向查找包的過程主要為a)先將所有包的manifest存放在一個(gè)以包名為目錄的文件夾下面;b)所有這些包又放在同一個(gè)父目錄下,這樣方便后期查找;c)通過關(guān)鍵詞查找每個(gè)包A下的依賴包,將依賴包記錄在一個(gè)臨時(shí)文件中,臨時(shí) 文件中每一行代表一個(gè)依賴包,依次表示為Bl,B2, B3……;d)讀取這個(gè)臨時(shí)文件每一行,即包Bl……,將原始包名A輸入到以這個(gè)包B1為文 件名的文件中保存起來,或者使用數(shù)據(jù)庫記錄;e)遍歷整個(gè)包庫集,用F_B1表示保存的文件,這樣?_81文件中每一行A1,A2…都 是遍歷過程中,A1依賴B1所記錄進(jìn)來的,保證整個(gè)系統(tǒng)中不會遺漏包和多包現(xiàn)象;f)依賴包中選擇任意變量A1,遍歷數(shù)據(jù)庫所有的文件,讀取A1每一行作為一個(gè)變 量B1,再打開這個(gè)變量B1的文件,讀取該文件B1的所有信息,并記錄到原始變量A1中,這 樣能保證所有的文件都查詢到所有的依賴,而不是只有一級依賴。opensolaris系統(tǒng)下采用PKG的管理包,它的包倉庫稱為IPS,它集合了所有的 opensolaris可能用到的功能包,有些是必須的,有些是核心的,有些是可選的,在IPS里 面,所有的包按照一定的格式陳列在服務(wù)器上,用戶和開發(fā)者訪問opensolaris的官方 IPS,或在本地或者局域網(wǎng)做一個(gè)官方的鏡像,Linux下的包倉庫采用的是yum-update或者 APT技術(shù),基本功能跟IPS相似。4.根據(jù)權(quán)利要求1所述的方法,其特征在于每個(gè)功能包的所有文件都在同一個(gè)文 件夾下面,不會有第二級目錄,這樣組織便于開發(fā)者和用戶迅速查找,每個(gè)功能包下的一個(gè) 特殊文件都記錄了本功能包依賴系統(tǒng)中的零個(gè)或者1個(gè)以上的其他功能包,這樣,在整個(gè) IPS包庫框架下,所有的包組成一個(gè)有限路徑的可連通的圖集,也就是所有的包的依賴性都 是可查找的,LINUX下的.Spec文件具有同樣的功能。包在一個(gè)圖集的環(huán)境下找到所有包的依賴和被依賴的關(guān)系,對包進(jìn)行刪除的時(shí) 候,能夠輕松的知道刪除它對系統(tǒng)功能的影響,很快捷的定制化操作系統(tǒng)。
本發(fā)明的優(yōu)異效果是主要適用于opensolaris包管理,對Iinux下的rpm包管 理,ubuntu下的apt包管理也同樣適用。不管是Iinux的rpm、apt管理工具還是unix下的pkg包管理工具,都有類似的包 管理工具和包庫技術(shù)。采用類似的方法,可以使得系統(tǒng)的使用更加方便。
附圖1包圖集的邏輯關(guān)系和包依賴關(guān)系;附圖2包文件的組織結(jié)構(gòu);附圖3查找包被依賴的流程圖。
具體實(shí)施例方式下面參照附圖1,2和3,對本發(fā)明的內(nèi)容以一個(gè)具體實(shí)例來描述實(shí)現(xiàn)這一體系結(jié) 構(gòu)的過程。正如發(fā)明里面所描述的一樣,操作系統(tǒng)中,包管理工具的數(shù)據(jù)庫記錄著所有包, 它們被集合在一個(gè)特定的地方,如圖1所示。每個(gè)包本身是由一定數(shù)量的包文件組成,他們 被記錄在一個(gè)特定的描述文件manifest中,manifest也在當(dāng)前包目錄下。一般的包的組 織結(jié)構(gòu)如圖2所示。各種包的組織根據(jù)包的功能不一樣,依賴關(guān)系也不一樣。有的包不被其他包依賴, 也不依賴其他包,如圖1中的P包;有的包除了被其他包依賴外,還依賴另外的其他包,如圖 1中的B、C包;有的包只依賴其他包,如圖1中的D、E等;有的包只被其他包依賴,如圖1中 的A,X ;還有更復(fù)雜的是,幾個(gè)包組成一個(gè)閉合集等等。圖1是描述包和包之間的相互關(guān)系 的示意圖。利用包庫技術(shù)(圖1)和包的組織技術(shù)(圖2),在包庫的基礎(chǔ)上,提取所有包的描 述文件到對應(yīng)的包文件目錄下,稱父目錄為描述文件集。如圖3所示,在包庫基礎(chǔ)上創(chuàng)建對 應(yīng)的包文件或者包的表格,這里稱表格集為依賴包集。選取表格中任意一個(gè)文件名作為遍 歷變量,在描述文件集中進(jìn)行關(guān)鍵詞逆向匹配,查找。每匹配一個(gè),就將描述文件集的包名 記錄到這個(gè)遍歷變量的依賴數(shù)據(jù)庫表中,這樣遍歷完所有的描述集之后,依賴包中所有文 件的一級依賴都已查詢完畢。從依賴包集中選取任意變量,在本集合中進(jìn)行關(guān)鍵詞匹配,如 果找到,說明這個(gè)變量存在二級依賴或者更多級別的依賴。需要將它的依賴的文件,都記錄 到本變量的表格中。如此循環(huán),可以將依賴集中的所有文件進(jìn)行深入、全面查找。利用包庫技術(shù),能方便的找到庫文件或者SO文件來源于哪個(gè)包;逆向算法實(shí)現(xiàn)之 后,可以輕松的找到包被哪些包依賴,輕松定制化系統(tǒng),使系統(tǒng)能提供更高效、更專業(yè)的服 務(wù)。
權(quán)利要求
一種unix操作系統(tǒng)中逆向查找包被依賴的方法,其特征在于,在包倉庫IPS的基礎(chǔ)上,查找同一個(gè)版本中所有包的相互依賴關(guān)系,根據(jù)包的依賴關(guān)系,有效的對系統(tǒng)進(jìn)行輕松的定制化工作,整個(gè)包的逆向查找包括1)包倉庫技術(shù)IPS,2)包組織技術(shù),3)逆向查找包的方法,其中1)包倉庫技術(shù)IPS,是包管理技術(shù)中的重要部分,它將所有的功能包按照一定的規(guī)則組織起來,按照發(fā)布版本,組成一個(gè)集合;發(fā)布到網(wǎng)上服務(wù)器,供所有的開發(fā)者和應(yīng)用者使用,客戶端裝有相應(yīng)的客戶端工具,用戶通過網(wǎng)絡(luò)訪問IPS,進(jìn)行一些操作,包括包的安裝,卸載,升級,查看包的描述特性,特性包含包安裝到哪個(gè)目錄,安裝后的名稱,需要系統(tǒng)的哪些依賴文件;2)包組織技術(shù),opensolaris下包是以文件夾的方式組織起來的所有的功能文件和描述文件都在同一個(gè)文件目錄下,文件目錄名稱也就是包的名稱,這是包組織結(jié)構(gòu)的特點(diǎn),文件夾下面包含包功能的二進(jìn)制文件,源碼文件,描述文件信息;3)逆向查找方法,利用包的組織結(jié)構(gòu)特殊性,并且利用包在一個(gè)版本的IPS系統(tǒng)中的集合性,找到系統(tǒng)中的功能包被其他哪些包依賴,包的描述文件中的關(guān)鍵描述詞記錄著包的依賴特性,通過逆向遍歷描述集,記錄包的依賴關(guān)系。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,具體內(nèi)容和步驟為1)包在系統(tǒng)框架下組成一個(gè)有限集合,集合中的元素有的是單個(gè)個(gè)體,有的是一個(gè)有 限的單向連通圖集,通過這些圖集可達(dá)性,找到集合里面所有的包相互關(guān)系;2)包是以文件夾的方式組織的,文件夾名稱就是包名,文件夾下面有包的功能文件,這 些文件是以它本身的哈希值作為文件名,鑒于哈希值的唯一性特點(diǎn),以哈希值命名的文件 在整個(gè)系統(tǒng)中唯一性,最重要的一個(gè)文件就是manifest文件,它的功能類似于linux系統(tǒng) 下rpm包組織方式的.SPEC文件,Manifest除了負(fù)責(zé)包下各個(gè)文件的安裝路徑,權(quán)限,安裝 后名稱,包功能描述外,還有一個(gè)重要的作用就是,它記錄安裝這個(gè)包所需要的依賴包,一 兩個(gè)或十幾個(gè),也就是說,安裝這個(gè)包,包管理工具自動會檢測系統(tǒng)是否已經(jīng)安裝了這些包 文件,有,則系統(tǒng)會正常的安裝這個(gè)包,沒有,則首先安裝這些包;3)根據(jù)包描述文件manifest中的記錄,逆向查找包的過程主要為a)先將所有包的manifest存放在一個(gè)以包名為目錄的文件夾下面;b)所有這些包又放在同一個(gè)父目錄下,這樣方便后期查找;c)通過關(guān)鍵詞查找每個(gè)包A下的依賴包,將依賴包記錄在一個(gè)臨時(shí)文件中,臨時(shí)文件 中每一行代表一個(gè)依賴包,依次表示為Bl,B2, B3……;d)讀取這個(gè)臨時(shí)文件每一行,即包B1……,將原始包名A輸入到以這個(gè)包B1為文件名 的文件中保存起來,或者使用數(shù)據(jù)庫記錄;e)遍歷整個(gè)包庫集,用F_B1表示保存的文件,這樣F_B1文件中每一行A1,A2…都是遍 歷過程中,A1依賴B1所記錄進(jìn)來的,保證整個(gè)系統(tǒng)中不會遺漏包和多包現(xiàn)象;f)依賴包中選擇任意變量A1,遍歷數(shù)據(jù)庫所有的文件,讀取A1每一行作為一個(gè)變量 B1,再打開這個(gè)變量B1的文件,讀取該文件B1的所有信息,并記錄到原始變量A1中,這樣 能保證所有的文件都查詢到所有的依賴,而不是只有一級依賴。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,opensolaris系統(tǒng)下采用PKG的管理包, 它的包倉庫稱為IPS,它集合了所有的opensolaris可能用到的功能包,有些是必須的,有些是核心的,有些是可選的,在IPS里面,所有的包按照一定的格式陳列在服務(wù)器上,用戶 和開發(fā)者訪問opensolaris的官方IPS,或在本地或者局域網(wǎng)做一個(gè)官方的鏡像,Linux下 的包倉庫采用的是yum-update或者APT技術(shù),基本功能跟IPS相似。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于每個(gè)功能包的所有文件都在同一個(gè)文件夾 下面,不會有第二級目錄,這樣組織便于開發(fā)者和用戶迅速查找,每個(gè)功能包下的一個(gè)特殊 文件都記錄了本功能包依賴系統(tǒng)中的零個(gè)或者1個(gè)以上的其他功能包,這樣,在整個(gè)IPS包 庫框架下,所有的包組成一個(gè)有限路徑的可連通的圖集,也就是所有的包的依賴性都是可 查找的,LINUX下的.Spec文件具有同樣的功能。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于包在一個(gè)圖集的環(huán)境下找到所有包的依賴 和被依賴的關(guān)系,對包進(jìn)行刪除的時(shí)候,能夠輕松的知道刪除它對系統(tǒng)功能的影響,很快捷 的定制化操作系統(tǒng)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于主要適用于opensolaris包管理,對linux 下的rpm包管理,ubuntu下的apt包管理也同樣適用。
全文摘要
本發(fā)明提供一種unix操作系統(tǒng)中逆向查找包被依賴的方法,在包倉庫IPS的基礎(chǔ)上,查找同一個(gè)版本中所有包的相互依賴關(guān)系,根據(jù)包的依賴關(guān)系,有效的對系統(tǒng)進(jìn)行輕松的定制化工作,整個(gè)包的逆向查找包括1)包倉庫技術(shù)IPS,2)包組織技術(shù),3)逆向查找包的方法,其中1)包倉庫技術(shù)IPS,是包管理技術(shù)中的重要部分,它將所有的功能包按照一定的規(guī)則組織起來,按照發(fā)布版本,組成一個(gè)集合;發(fā)布到網(wǎng)上服務(wù)器,供所有的開發(fā)者和應(yīng)用者使用,客戶端裝有相應(yīng)的客戶端工具,用戶通過網(wǎng)絡(luò)訪問IPS,進(jìn)行一些操作,包括包的安裝,卸載,升級,查看包的描述特性,特性包含包安裝到哪個(gè)目錄,安裝后的名稱,需要系統(tǒng)的哪些依賴文件。
文檔編號G06F17/30GK101826103SQ201010139190
公開日2010年9月8日 申請日期2010年4月6日 優(yōu)先權(quán)日2010年4月6日
發(fā)明者李開君 申請人:山東高效能服務(wù)器和存儲研究院