專利名稱:Linux操作系統(tǒng)發(fā)行制作方法
技術領域:
本發(fā)明涉及Linux操作系統(tǒng)領域,尤其涉及Linux操作系統(tǒng)的制作發(fā)行(產生)領域,具體地說,是涉及一種Linux操作系統(tǒng)發(fā)行制作方法。
背景技術:
—般地,Linux操作系統(tǒng)的發(fā)行制作通過pungi工具來完成。pungi能夠依據配置/文件ks. cfg來發(fā)行制作最新版本的Linux操作系統(tǒng)。下面結合圖I來簡單說明利用pungi來發(fā)行制作Linux操作系統(tǒng)的過程。步驟SllOJ^Fks. cfg文件,獲取軟件包組名稱和軟件包名稱的集合A,此時的軟件包組名稱和軟件包名稱均不包含版本信息;步驟S120,在集合A中增加pungi程序默認安裝的軟件包組core和軟件包組base ;步驟S130,通過comps文件中對軟件包組和軟件包的定義,展開所有軟件包組,獲取在comps文件中定義的軟件包組的軟件包列表;步驟S140,通過yum獲取最新的軟件包的接口從服務器倉庫里面選擇最新版本的軟件包。步驟S150,將最新的軟件包下載到操作系統(tǒng)生產環(huán)境指定的目錄/var/cache/pungio步驟S160,根據目錄A,創(chuàng)建yum倉庫。然而,并不是所有情況下Linux操作系統(tǒng)生產商均希望制作發(fā)行當前所研發(fā)的最新版本的操作系統(tǒng)。在一些情況下,客戶所希望購買的并不是最新的Linux操作系統(tǒng),而是Linux操作系統(tǒng)生產商根據不同客戶需求制定的某個特定版本。例如,Linux操作系統(tǒng)生產商會各個客戶的要求開發(fā)了版本軟件包packagel,當前packagel具有三個系列的版本
I.I. 1,1. I. 2,1. I. 3 ;1. 2. 1,1. 2. 2,1. 2. 3 ;1. 3. 1,1. 3. 2,1. 3. 3,1. 3. 4。假設這三個系統(tǒng)的版本中,I. 3. 4是該軟件包當前的最新版本。但是,I. I. 1,1. 1.2,1. I. 3為專門為客戶Cl定制的版本,I. 2. I、I. 2. 2、I. 2. 3為專門為客戶C2定制的版本,而I. 3. I、I. 3. 2、I. 3. 3、I. 3.4均不適用于客戶Cl或C2。這樣,客戶Cl和C2所需要的最新版本并非是軟件包packagel的實際最新版本,對客戶Cl和C2,packagel的最新版本分別為I. I. 3和I. 2. 3。在這種情況下,傳統(tǒng)的pungi技術則無法正確地為客戶Cl或C2發(fā)行制作包括正確版本軟件包packagel的Linux操作系統(tǒng)。簡而言之,利用傳統(tǒng)的pungi無法較好地滿足為客戶發(fā)行制作特定版本的Linux操作系統(tǒng)。
發(fā)明內容
本發(fā)明所要解決的技術問題之一是需要提供一種因避免因客戶定制所帶來的大量手動操作的Linux操作系統(tǒng)發(fā)行制作方法。
為了解決上述技術問題,本發(fā)明提供了一種Linux操作系統(tǒng)發(fā)行制作方法。該方法包括第一確定步驟,獲取關于軟件包組、軟件包以及它們的下載路徑的配置信息,基于所述配置信息確定各軟件包組名稱及其下載路徑和各軟件包名稱及其下載路徑。第二確定步驟,根據comps文件確定所述第一確定步驟中所確定的軟件包組所包含的各軟件包名稱;下載步驟,下載與所述第一確定步驟和所述第二確定步驟中所確定的軟件包名稱對應的軟件包;創(chuàng)建步驟,基于所下載的軟件包來創(chuàng)建yum軟件倉庫;
發(fā)行步驟,基于所創(chuàng)建yum倉庫執(zhí)行后續(xù)的發(fā)行制作處理。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,所述配置信息還包括是否要更新軟件包組base和軟件包組core的信息。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,在所述第一確定步驟中,所述配置信息中還包括各軟件包組名稱的版本信息和/或各軟件包的版本信息;以及基于所述配置信息來確定包含版本信息的各軟件包組名稱和/或各軟件包的名稱。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,在所述下載步驟中,針對軟件包名稱中包含版本信息的軟件包,下載與軟件包名稱中版本信息對應版本的軟件包;以及,針對軟件包名稱中不包含版本信息的軟件包,下載最新版本的軟件包。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,將所述配置信息保存在ks. cfg文件中。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,還包括,判斷所述第一確定步驟中所確定的各軟件包名稱中是否存在包含了版本信息的軟件包名稱;以及,若判斷結果為存在,利用yum依賴檢查接口,檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,若檢測為不滿足成功安裝操作系統(tǒng)所要求的依賴關系,則提示關于不滿足依賴關系的原因從而導致Linux操作系統(tǒng)發(fā)行制作失敗的信息,并結束處理。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,在檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系的處理中,依照各軟件包所處的層對所述下載步驟所下載的各軟件包進行排序,得到軟件包列表;以及針對排好序的軟件包列表逐一檢測是否已經下載了各軟件包所依賴的全部軟件包。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,在檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系的處理中,依照各軟件包所處的層對所述下載步驟所下載的各軟件包進行排序,得到軟件包列表;以及優(yōu)先檢測是否已經下載了處于高層的軟件包所依賴的全部軟件包。根據本發(fā)明另一方面的Linux操作系統(tǒng)發(fā)行制作方法,通過修改pungi的生產過程中與包搜集階段相關的處理來實現本方法。與現有技術相比,本發(fā)明的一個或多個實施例可以具有如下優(yōu)點通過基于所述配置信息確定各軟件包組名稱及其下載路徑和各軟件包名稱及其下載路徑,可以方便研發(fā)人員進行Linux操作系統(tǒng)的客戶定制的發(fā)行制作,避免因客戶定制所帶來的大量手動操作。
本發(fā)明的一方面考慮到在客戶定制的情況下,并不一定期望軟件包組base和軟件包組core升級到最新版本,甚至,有時最新版本的軟件包組base和軟件包組core并不一定與客戶所定制的版本相兼容。因此,本發(fā)明基于包括是否要更新軟件包組base和軟件包組core的信息等配置信息來下載相應的版本,并依據配置信息下載的版本進行依賴關系檢測,可有效地節(jié)約研發(fā)人員的版本發(fā)行時間,避免過多的手動操作或發(fā)行的版本不可用。本發(fā)明的其他優(yōu)點、目標,和特征在某種程度上將在隨后的說明書中進行闡述,并且在某種程度上,基于對下文的考察研究對本領域技術人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導。本發(fā)明的目標和其他優(yōu)點可以通過下面的說明書,權利要求書,以及附圖中所特別指出的結構來實現和獲得。
附圖用來提供對本發(fā)明的進一步理解,并且構成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構成對本發(fā)明的限制。在附圖中圖I是現有技術利用pungi來發(fā)行制作Linux操作系統(tǒng)的過程;圖2是根據本發(fā)明第一實施例的Linux操作系統(tǒng)發(fā)行制作方法的流程圖;圖3是Linux操作系統(tǒng)分層架構示意圖。
具體實施例方式以下將結合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用技術手段來解決技術問題,并達成技術效果的實現過程能充分理解并據以實施。需要說明的是,只要不構成沖突,本發(fā)明中的各個實施例以及各實施例中的各個特征可以相互結合,所形成的技術方案均在本發(fā)明的保護范圍之內。第一實施例下面參考圖2來詳細說明根據本實施例的Linux操作系統(tǒng)發(fā)行制作方法的各步驟。步驟S210,獲取關于軟件包組、軟件包以及它們的下載路徑的配置信息,基于該配置信息確定各軟件包組名稱及其下載路徑、和各軟件包名稱及其下載路徑;優(yōu)選地,配置信息還包括是否要更新軟件包組base和軟件包組core的信息。這樣,可以根據配置信息來靈活配置是否要更新軟件包組base和軟件包組core。傳統(tǒng)技術中,每次均會獲取最新的軟件包組base和軟件包組core,但在客戶定制的場合下,并不一定期望軟件包組base和軟件包組core升級到最新版本,甚至,有時最新版本的軟件包組base和軟件包組core并不一定與客戶所定制的版本相兼容,因此,本實施例的方法能夠更好地滿足客戶定制需求。優(yōu)選為,配置信息中包括各軟件包組名稱的版本信息和/或各軟件包的版本信息,基于該包括各軟件包組名稱和/或各軟件包的版本信息的配置信息來確定包含版本信息的各軟件包組名稱和/或各軟件包的名稱。在Linux系統(tǒng)中,也將包含版本信息的軟件包名稱/軟件包組名稱稱為軟件包全稱/軟件包組全稱。步驟S220,根據comps文件確定步驟S210中確定的軟件包組所包含的各軟件包名稱。將在后續(xù)對comps文件進行詳細說明。步驟S230,下載與上述步驟S210和S220中確定的軟件包名稱對應的軟件包,進一步地,針對軟件包名稱中包含版本信息的軟件包,下載與軟件包名稱中版本信息對應版本的軟件包,針對軟件包名稱中不包含版本信息的軟件包,下載最新版本的軟件包。步驟S240,基于步驟S230下載的軟件包來創(chuàng)建yum軟件倉庫??蛇x地,本實施例的Linux操作系統(tǒng)發(fā)行制作方法可包括步驟S250。在步驟S250中,判斷步驟S210中所確定的各軟件包名稱中是否存在包含了版本信息的軟件包名稱,如果判斷為存在,則進入步驟S260,如果判斷為否,則進入步驟S270。
需要注意的是,本實施例的Linux操作系統(tǒng)發(fā)行制作方法也可不包括步驟S250而從步驟S240直接進入步驟S270。步驟S260,利用yum依賴檢查接口,檢測步驟S230中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系,若檢測結果為滿足,則進入步驟S270,反之,則進入步驟 S280。本實施例通過執(zhí)行驟S260的依賴檢測處理,可以較好地避免由于配置信息中的軟件包版本不匹配或版本配置錯誤所導致的無法發(fā)行制作操作系統(tǒng)或所發(fā)行制作的操作系統(tǒng)不可用的情況。步驟S270,基于所創(chuàng)建yum倉庫執(zhí)行后續(xù)的發(fā)行制作處理。步驟S280,結束處理。優(yōu)選地,提示關于不滿足依賴關系的原因從而導致Linux操作系統(tǒng)發(fā)行制作失敗的信息,并結束處理。這樣,可以技術人員分析發(fā)行制作失敗的原因,根據所提示的關于不滿足依賴關系的原因的信息來重新設定上述配置信息。關于不滿足依賴關系的原因一般可表現為某個軟件包依賴的某個其它軟件包不存在的信息。此外,在步驟S210中,可以通過修改Linux操作系統(tǒng)中的ks. cfg來設置配置信息,換而言之,將配置信息保存在ks. cfg文件中,這樣可基于修改后的ks. cfg確定各軟件包組名稱和各軟件包名稱。下面詳細說明Linux操作系統(tǒng)中關于軟件包依賴檢查的原理。在介紹軟件包依賴檢查首先需要了解Linux發(fā)行版操作系統(tǒng)的組成。Linux操作系統(tǒng)架構大致如圖3所示。通過圖3所示的框架可了解Linux發(fā)行版的大致構成。從圖中可以看到應用程序(Application)通過操作第三方軟件接口庫(Third Libary)和基礎庫(glibc),來間接操作Linux內核(Linux Kernel)和硬件驅動程序(Driver),通過內核(Linux Kernel)與在硬件基礎(Hardware)來使用硬件資源(Hardware)。本發(fā)明的發(fā)明人注意到各軟件包的依賴關系是一種自上而下的依賴關系。更具體地,當處于應用軟件層的軟件包能正常使用時,必須依賴下層的第三方軟件庫和基礎庫,以及內核和驅動程序。因此,可以得出一個結論,就是軟件包的依賴是單向的,而非雙向。假定軟件包A、B、C、D分別處于應用軟件層、第三方軟件庫、基礎庫、內核。那么,其依賴關系如下第一,A軟件包依賴B、C、D。第二,B軟件包依賴C、D0
第三,C軟件包依賴D。第四,D軟件包不依賴任何軟件包?;谏鲜隹紤],在步驟S260中,在利用yum依賴檢查接口檢測步驟S230中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系時,具體包括,首先依照各軟件包所處的層對步驟S230所下載的各軟件包進行排序,得到軟件包列表。然后針對排好序的軟件包逐一檢測 是否已經下載了各軟件包所依賴的全部軟件包。這樣,一旦發(fā)現沒有下載某個軟件包所依賴的軟件包,則使得步驟S260的檢測結果為不滿足。在一種優(yōu)選方式中,可以按在Linux架構所處的層從高層向底層進行排序,依據從高層向低層的軟件包列表,優(yōu)先檢測是否已經下載了處于高層的軟件包所依賴的全部軟件包。在這種方式中,由于處于高層的軟件包的依賴關系較復雜較雜,此外,一般情況下,用戶定制的軟件包一般也處于高層,高層的軟件包依賴關系較易出錯,因此優(yōu)選檢測處于高層的軟件包的依賴關系(即優(yōu)先檢測是否已經下載了該軟件包所依賴的全部軟件包),有利于較快地檢測出可能存在的依賴關系問題。需要說明的是,可以通過修改pungi來實現本實施例的上述各步驟。主要的修改體現在修改pungi的生產過程中與包搜集階段相關的處理,例如,修改pungi搜集軟件包的階段、修改指定版本軟件包的獲取方式和對所有包所進行的閉合依賴檢查等。下面簡單介紹ks. cfg文件的內容格式,舉例大致如下
repo - name=A —baseurl=B通過上面的這個ks. cfg的例子中,主要內容可分為兩塊第一塊,就是指定軟件包的獲取地址,即“repo - name=A—baseurl=B”行,其含義是指定軟件包獲取的倉庫源B,并將這些軟件包下載到本地的命名/var/cache/pungi/A的目錄中,字串含義如下解釋A :用戶任意書寫的名字。B :存放生產iso的所有軟件包的地址。第二塊,就是指定軟件包組和軟件包。其中%packages和%end指定待獲取軟件包組和軟件包的開始和結束的標記,該標記在pungi解析ks. cfg時用到。在%packages和%end包含的區(qū)域還出現字串Ocore、Obase、packagel、package2。其含義描述如下@core core軟件包組,即一組軟件包集合,在comps文件中定義這些軟件包組所包含哪些軟件包,以及各軟件包的名稱。
ibase base軟件包組,即一組軟件包集合,在comps文件中定義這些軟件包組所包含哪些軟件包,以及各軟件包的名稱。packagel :軟件包名稱,在comps文件定義這些軟件包的名稱、功能、及所屬分組和用途。package2 :軟件包名稱,在comps文件定義這些軟件包的名稱及所屬分組。 下面再對comps文件作一簡單說明,comps首先是XML檔格式,關于內容格式,舉
例如下
權利要求
1.一種Linux操作系統(tǒng)發(fā)行制作方法,其特征在于,包括 第一確定步驟,獲取關于軟件包組、軟件包以及它們的下載路徑的配置信息,基于所述配置信息確定各軟件包組名稱及其下載路徑和各軟件包名稱及其下載路徑; 第二確定步驟,根據comps文件確定所述第一確定步驟中所確定的軟件包組所包含的各軟件包名稱; 下載步驟,下載與所述第一確定步驟和所述第二確定步驟中所確定的軟件包名稱對應的軟件包; 創(chuàng)建步驟,基于所下載的軟件包來創(chuàng)建yum軟件倉庫; 發(fā)行步驟,基于所創(chuàng)建yum倉庫執(zhí)行后續(xù)的發(fā)行制作處理。
2.根據權利要求I所述的方法,其特征在于, 所述配置信息還包括是否要更新軟件包組base和軟件包組core的信息。
3.根據權利要求I所述的方法,其特征在于,在所述第一確定步驟中, 所述配置信息中還包括各軟件包組名稱的版本信息和/或各軟件包的版本信息;以及 基于所述配置信息來確定包含版本信息的各軟件包組名稱和/或各軟件包的名稱。
4.根據權利要求3所述的方法,其特征在于,在所述下載步驟中, 針對軟件包名稱中包含版本信息的軟件包,下載與軟件包名稱中版本信息對應版本的軟件包;以及, 針對軟件包名稱中不包含版本信息的軟件包,下載最新版本的軟件包。
5.根據權利要求I所述的方法,其特征在于,將所述配置信息保存在ks.cfg文件中。
6.根據權利要求I至5中任一項所述的方法,其特征在于,還包括, 判斷所述第一確定步驟中所確定的各軟件包名稱中是否存在包含了版本信息的軟件包名稱;以及, 若判斷結果為存在,利用yum依賴檢查接口,檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系。
7.根據權利要求6所述的方法,其特征在于,還包括, 若檢測為不滿足成功安裝操作系統(tǒng)所要求的依賴關系,則提示關于不滿足依賴關系的原因從而導致Linux操作系統(tǒng)發(fā)行制作失敗的信息,并結束處理。
8.根據權利要求6所述的方法,其特征在于,在檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系的處理中, 依照各軟件包所處的層對所述下載步驟所下載的各軟件包進行排序,得到軟件包列表;以及 針對排好序的軟件包列表逐一檢測是否已經下載了各軟件包所依賴的全部軟件包。
9.根據權利要求8所述的方法,其特征在于,在檢測所述下載步驟中所下載的軟件包是否滿足成功安裝操作系統(tǒng)所要求的依賴關系的處理中, 依照各軟件包所處的層對所述下載步驟所下載的各軟件包進行排序,得到軟件包列表; 以及 優(yōu)先檢測是否已經下載了處于高層的軟件包所依賴的全部軟件包。
10.根據權利要求I所述的方法,其特征在于,通過修改pungi的生產過程中與包搜集階段相關的 處理來實現本方法。
全文摘要
本發(fā)明公開了一種Linux操作系統(tǒng)發(fā)行制作方法。該方法包括獲取關于軟件包組、軟件包以及它們的下載路徑的配置信息,基于所述配置信息確定各軟件包組名稱及其下載路徑和各軟件包名稱及其下載路徑;根據comps文件確定所述第一確定步驟中所確定的軟件包組所包含的各軟件包名稱;下載步驟,下載與所述第一確定步驟和所述第二確定步驟中所確定的軟件包名稱對應的軟件包;創(chuàng)建步驟,基于所下載的軟件包來創(chuàng)建yum軟件倉庫;發(fā)行步驟,基于所創(chuàng)建yum倉庫執(zhí)行后續(xù)的發(fā)行制作處理。該方法可以方便研發(fā)人員進行客戶定制的Linux操作系統(tǒng)的發(fā)行制作。
文檔編號G06F9/44GK102654835SQ20121013739
公開日2012年9月5日 申請日期2012年5月3日 優(yōu)先權日2012年5月3日
發(fā)明者夏穎, 胡曉英, 胡秋立, 許國昌, 鐘文佳 申請人:中標軟件有限公司