註冊新的資源類型時,其 RTR 檔案在磁碟上必須是可存取的
當建立新類型的資源時,所有宣告的方法路徑名稱與新類型的監視器程式均必須位於磁碟上並且是可執行的。 只要資源處於使用中狀態,則舊方法與監視器程式都必須保留在適當位置。
若要決定最適當的封裝,資源類型實作者必須考量以下問題:
RTR 檔案是否變更?
屬性的預設值或可調性是否變更?
屬性的 min 或 max 值是否變更?
升級是否會新增或刪除屬性?
方法程式碼是否變更?
監視器程式碼是否變更?
新方法或監視器程式碼與舊版本是否相容?
一些資源類型升級不會涉及新方法或監視器程式碼。 例如,資源類型升級可能僅變更資源屬性的預設值或可調性。 由於方法程式未變更,因此安裝升級的唯一要求是具有可讀 RTR 檔案的有效路徑名稱。
如果不需要重新註冊舊資源類型,則新 RTR 檔案可以覆寫舊版本。 否則,新的 RTR 檔案可置於新的路徑名稱中。
如果升級變更屬性的預設值或可調性,新版本的 Validate 方法可以在遷移時確認現有的屬性性質對於新資源類型有效。 如果升級變更屬性的 min、max 或 type 性質,則 scrgadm 指令在遷移時自動驗證這些限制。
升級說明文件必須呼出所有的新預設屬性性質。 說明文件必須通知系統管理員可以透過用來編輯 Type_version 屬性以將資源升級至新資源類型版本的相同指令,來將現有資源的屬性編輯為適當的值。
如果升級新增或刪除屬性,則很可能也必須變更某些回呼方法或監視器程式碼。
如果在更新的資源類型中僅變更監視器程式碼,則套件安裝可以覆寫監視器二進位檔。 在安裝新的套件前,說明文件必須通知系統管理員暫停監視。
如果在更新的資源類型中僅變更方法程式碼,請務必確定新方法程式碼是否與舊版本相容。 這樣可決定新方法程式碼是否必須儲存於新的路徑名稱中,或是否可以覆寫舊方法。
如果新的 Stop、Postnet_stop 以及 Fini 方法 (如果已宣告) 可以套用至由舊版 Start、Prenet_stop 或 Init 方法初始化或啟動的資源,則可能會以新方法覆寫舊方法。
如果新方法程式碼與舊版本不相容,則必須停止或取消配置使用舊版本方法的資源,然後才能將資源遷移至升級的資源類型。 如果新方法覆寫舊方法,則在進行資源類型升級之前,新方法將要求關閉 (或可能不管理) 所有此類型的資源。 如果新方法與舊方法個別儲存 (且可同時存取新方法與舊方法),則甚至在沒有向下相容性的情況下,都可能安裝新資源類型並逐個升級資源。
即使新方法是向下相容的,也可能要求每次升級一個資源以使用新方法,而其他資源繼續使用舊方法。 仍有必要將新方法儲存於個別目錄中,而非覆寫舊方法。
將每個資源類型版本的方法儲存於個別目錄中的優勢是,如果新的版本出現問題,可以很容易將資源切換回舊的資源類型版本。
一個封裝方法是包含套件中仍支援的所有舊版本。 這樣可允許新的套件版本取代舊的版本,而不覆寫或刪除舊方法路徑。 決定支援多少個舊版本取決於資源類型開發者。
建議不要覆寫方法或對目前位於叢集中節點上的方法執行 pkgrm/pkgadd。 如果 RGM 要在某個方法於磁碟上不可存取時呼叫該方法,則可能出現非預期的結果。 移除或取代正在執行方法的二進位碼也可能引起非預期的結果。