專利名稱:一種可跨系統的軟件升級方法
技術領域:
本發明涉及一種可跨系統的軟件升級方法,主要針對網絡設備或安全設備內的軟件系統升級,其特點是可跨軟件系統使用及其高可靠性。屬于軟件技術領域。
背景技術:
通常軟件系統都需要具備可升級的特性,使得在硬件不變的情況下,通過軟件的更新,實現更豐富的功能或修正已知的錯誤。
網絡設備或安全設備內軟件的升級過程通常包含以下部分1.管理端通過網絡對設備端進行身份認證和版本核查;2.管理端通過網絡將升級文件下發至設備端;3.設備端根據升級文件對軟件系統進行升級操作;4.設備端通過網絡反饋管理端升級結果。
過程3內包含的操作最為復雜,其中可能包括文件校驗、文件替換、文件修改、進程(線程)管理、系統啟動等諸多動作,未經過良好設計和測試的升級過程很容易由于各種原因造成升級失敗,比如因為在網絡傳輸過程中數據傳輸錯誤,或在某次文件系統操作中由于系統繁忙而失敗,這就要求升級過程有充分的可靠性和容錯性,并且在無法修正的錯誤發生時,能夠準確的將系統無法恢復到升級前的狀態,避免系統癱瘓。
另外,不同設備的不同軟件系統的升級過程有很大的共性,通常每套系統需要實現自己的升級模塊,如果能夠很好的提取升級過程的共性特點,設計實現一套靈活的升級機制可用于不同的系統,則可以極大的減輕軟件開發測試的工作量,提供軟件系統的可靠性。
發明內容
本發明的目的是提供一種可跨系統的軟件升級方法。
本發明解決技術問題所采用的技術方案是一種可跨系統的軟件升級方法,包括如下步驟1)定義升級說明文件,在新版本的軟件系統上用打包程序制作升級包。
2)在待升級系統執行升級過程,該過程讀取升級包,并檢查包的完整性、合法性、適用性。
3)升級過程根據升級包信息進行升級操作,包括文件的增、刪、替換,進程的啟動、停止,系統的重啟,并對每步操作改變的系統狀態進行必要的紀錄和備份。
4)將升級結果輸出;如果升級過程中出現異常,將系統恢復至升級前的狀態,否則更新版本信息,清除備份信息。
本發明的有益效果具體如下提供了一套通用的升級過程,不同的軟件系統可以無需經過重新開發即使用該升級過程實現升級功能。并且該升級過程支持回滾功能,在升級失敗時可最大限度的保證軟件系統能夠回退至升級前的狀態。
優點在于1.通用性,不局限于只能升級固定程序甚至固定版本。升級的過程盡量與本軟件系統中其它部件實現無關,包括文件名、版本、目錄、文件數、文件結構等。
2.健壯性,保證系統可用,升級過程不影響系統其余部分,如升級過程出現異常,可將系統恢復至老版本。
圖1系統整體步驟圖;圖2升級操作和回滾步驟圖。
具體實施例方式
實施例1;一種可跨系統的軟件升級方法,包括如下步驟1)定義升級說明文件,在新版本的軟件系統上用打包程序制作升級包。
2)在待升級系統執行升級過程,該過程讀取升級包,并檢查包的完整性、合法性、適用性。
3)升級過程根據升級包信息進行升級操作,可能包括文件的增、刪、替換,進程的啟動、停止,系統的重啟,并對每步操作改變的系統狀態進行必要的紀錄和備份。
4)將升級結果輸出;如果升級過程中出現異常,將系統恢復至升級前的狀態,否則更新版本信息,清除備份信息。
為實現本發明所預期的通用性和健壯性,設計策略和各步驟的關鍵點如下升級分為打包過程和升級過程兩部分,分別對應步驟1)和步驟2)3)4)。打包過程完成升級包的制作,升級過程完成待升級系統的升級更新。這兩個過程的軟件實現可以適用于不同的軟件系統,不需要為不同的系統進行重新開發。并且在升級各步驟中只需要最簡的人工操作,這樣可以降低打包工作的復雜度和人為錯誤的幾率。
大多數升級所需要的操作可以歸納為以下子操作的有序組合文件的增、刪、替換,進程的啟動、停止,系統的重啟。所以升級過程只要支持這些操作,就可以滿足多數需求。為了滿足通用性,升級過程程序不得包含對具體文件名和路徑的硬編碼,所有文件名和相應的增、刪、改操作均作為配置信息包含在升級包內。升級過程取得升級包后,根據升級包內的操作描述和路徑信息,執行具體的升級操作。
升級包的大至結構如下,升Magic string級升級包結構版本包升級包文件的MD5 checksum頭適用硬件類型數部適用硬件類型列表分適用軟件類型數適用軟件類型列表待升級軟件版本號升級后軟件版本號內升級文件數容升級步驟1)的描述頭部步驟1)需要的文件數據分升級步驟2)的描述頭步驟2)需要的文件數據…描述頭的大至結構如下,操作類型下列操作之一文件增、刪、替換,進程的啟動、停止,系統重啟;待操作文件路徑,或進程名稱及相應執行路徑、執行參數、文件路徑;文件長度,當操作對象為文件時有效;文件屬性,當操作對象為文件時有效;文件MD5,當操作對象為文件時有效;在步驟2)中,升級過程首先對升級包進行解密和解壓,再根據升級包頭部分的校驗碼及版本等信息,檢測升級包的完整性、合法性、適用性。其中具體的加解密算法、壓縮方法、版本規定方法,可以由具體實現靈活掌握。
在步驟3)中,升級過程逐一讀取升級步驟的各描述頭,根據描述頭的內容,進行相應的操作。在進行操作前,需要保存當前的系統狀態,比如文件刪除前,要保存該文件內容和路徑,進程啟動前,要保存進程對應的文件路徑、執行路徑、執行參數。當所有的描述頭描述的操作完成,進入下一步,或當某步操作出現異常,進入下一步。
在步驟4)中,如果步驟3)成功,則清除步驟3)生成的備份信息,并更新版本信息。否則根據步驟3)中保存的每一步系統狀態,逆向一步步恢復系統到升級前的狀態。
在步驟1)中,需要人工生成一個文本的升級說明文件,該文件描述本次升級需要那些操作。再執行打包過程,打包過程會讀取該升級說明文件并自動生成升級包。這里需要手工寫升級說明文件的原因是,由于本升級過程是通用,所以升級過程和打包過程本身不知道系統升級涉及哪些操作,需要人指導一下。這個說明文件本身非常簡單,只要描述需要進行哪些文件的增、刪、替換,進程的啟動、停止,系統重啟操作即可。文件格式可根據具體實現靈活掌握。
另外為了最大程度的實現通用性,升級過程程序應該是自包含的,不存在對動態鏈接庫或其它外部程序、配置的依賴性。
實施例2;假設某軟件系統需要升級系統主程序A,由于是系統主程序,當升級進行時,在待升級機器上A程序一定處于運行狀態。并且該程序文件的路徑為/usr/opt/bin/A,執行路徑為/usr/opt/bin,無執行參數。
則可以確定升級過程需要下列步驟,1.停止系統當前運行的A進程。
2.替換A程序文件。
3.啟動A進程。
一種可跨系統的軟件升級方法,包括如下步驟步驟1.
手工生成升級說明文件如下(用于示意說明的例子文件,實際格式和關鍵字可靈活調整)########################Stop A /usr/opt/binReplace /usr/opt/bin/AStart A /usr/opt/bin########################運行打包過程程序,該程序根據說明文件內容,自動將程序文件A打入升級包,生成3個描述頭和升級包頭,最后進行壓縮和加密。
步驟2.
升級過程取得升級包,解密,解壓縮,刪除原始升級包。根據升級包頭判斷該包合法。
步驟3.
根據描述頭按順序執行停止、替換、啟動程序A的操作,在每步執行過程中,分別記錄停止的進程名和執行路徑、替換的文件路徑和老版本文件內容、啟動的進程名和執行路徑。
步驟4.
如果步驟3成功,則清除在每步操作中保留的記錄和備份信息,清除解壓后的升級包文件,返回成功信息。如果步驟3失敗,假設在最后一步啟動程序A時失敗,則根據前兩步保存的操作記錄和老版本文件內容,恢復老版本文件并將其啟動,最后返回失敗信息。
這個過程可以如圖1,2所示。
權利要求
1.一種可跨系統的軟件升級方法,其特征在于,包括以下步驟步驟a.定義升級說明文件,在新版本的軟件系統上用打包程序制作升級包;步驟b.在待升級系統執行升級過程,該過程讀取升級包,并檢查包的完整性、合法性、適用性;步驟c.升級過程根據升級包信息進行升級操作,包括文件的增、刪、替換,進程的啟動、停止,系統的重啟,并對每步操作改變的系統狀態進行紀錄和備份;步驟d、輸出升級結果,如果升級過程中出現異常,將系統恢復至升級前的狀態,否則清除備份信息。
2.根據權利要求1所述的一種可跨系統的軟件升級方法,其特征在于,步驟a中,升級說明文件描述升級過程中涉及的文件增、刪、替換操作,相關文件路徑;進程啟動、停止操作,相應得進程文件名、執行路徑、和執行參數;系統的重啟操作。
3.根據權利要求1所述的一種可跨系統的軟件升級方法,其特征在于,步驟a中,打包程序根據升級說明文件自動生成升級包。
4.根據權利要求1所述的一種可跨系統的軟件升級方法,其特征在于,步驟b中,升級程序對升級包進行解密解壓,并驗證該升級包的完整性和適用性,完整性根據升級包文件校驗碼驗證,適用性根據升級包頭內描述的軟硬件版本驗證。
5.根據權利要求1所述的一種可跨系統的軟件升級方法,其特征在于,步驟c中,升級程序逐一讀取描述頭并執行相應操作,在操作前要備份系統原始信息,如果某步操作失敗,則步驟c結束,不再處理后繼的描述頭。
6.根據權利要求1所述的一種可跨系統的軟件升級方法,其特征在于,步驟d中,如步驟c成功,升級程序清理備份內容,更新版本信息,返回成功信息;如步驟c失敗,升級程序恢復步驟c保存的系統原始信息。
全文摘要
本發明涉及一種可跨系統的軟件升級方法,屬于軟件技術領域。包括如下步驟定義升級說明文件,在新版本的軟件系統上用打包程序制作升級包。在待升級系統執行升級過程,該過程讀取升級包,并檢查包的完整性、合法性、適用性。升級過程根據升級包信息進行升級操作,可能包括文件的增、刪、替換,進程的啟動、停止,系統的重啟,并對每步操作改變的系統狀態進行必要的紀錄和備份。將升級結果輸出;如果升級過程中出現異常,將系統恢復至升級前的狀態,否則更新版本信息,清除備份信息。不同的軟件系統可以無需經過重新開發即使用該升級過程實現升級功能。升級過程支持回滾功能,在升級失敗時可最大限度的保證軟件系統能夠回退至升級前的狀態。
文檔編號G06F11/14GK101038549SQ20071006489
公開日2007年9月19日 申請日期2007年3月28日 優先權日2007年3月28日
發明者鄭理, 焦玉峰, 尚振威, 李新鵬, 丁勇 申請人:北京啟明星辰信息技術有限公司